Android несколько экземпляров WebView сохранить - PullRequest
2 голосов
/ 13 ноября 2010

Я пытаюсь сохранить и восстановить состояние 3 WebViews в своей деятельности, используя onSaveInstanceState() и метод restoreState() моего WebView в onCreate(). Это прекрасно работает, когда у меня был только один WebView, но с 3 WebViews для сохранения, похоже, что это только последнее сохранение, которое считает и отменяет другие сохранения; и поэтому, когда я использую метод restoreState() в onCreate(), первый WebView содержит содержимое третьего WebView, а два других - пустые.

Вот пример кода моей активности:

@Override 
public void onSaveInstanceState(Bundle outState) {
  ((WebView)findViewById(R.id.webview1)).saveState(outState);
  ((WebView)findViewById(R.id.webview2)).saveState(outState);
  ((WebView)findViewById(R.id.webview3)).saveState(outState);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    ((WebView)findViewById(R.id.webview1)).restoreState(savedInstanceState);
    ((WebView)findViewById(R.id.webview2)).restoreState(savedInstanceState);
    ((WebView)findViewById(R.id.webview3)).restoreState(savedInstanceState);
}

Должен ли я использовать какой-то трюк, чтобы использовать другой пакет для каждого представления? Я сделал что-то не так в моем коде, что вызывает это, или это стандартное поведение?

1 Ответ

6 голосов
/ 13 ноября 2010

Ваш 2-й вызов saveState() перезаписывает содержимое, сохраненное в первом вызове, а 3-й вызов перезаписывает содержимое 2-го вызова. В конце выполнения onSaveInstanceState() пакет содержит только 3-е состояние WebView.

Именно поэтому при восстановлении состояния 3-го WebView восстанавливается до 1-го WebView.

Создайте новый объект связки каждого из ваших WebViews и поместите их в объект outState Bundle, используя this , предоставляя разные ключи для каждого Bundle:

public void putBundle (String key, Bundle value)

В onCreate() получите Bundle s на основе 3 клавиш и восстановите состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...