Вкладки Android - избегайте воссоздания действий при нажатии на вкладки - PullRequest
1 голос
/ 25 августа 2010

Я собрал небольшое приложение с тремя вкладками для отображения трех разных веб-страниц. Это работает, однако я немного волнуюсь, что не могу достаточно контролировать то, как все это работает. Когда я щелкаю вкладку, я загружаю веб-страницу (см. Пример кода ниже), теперь, когда я щелкаю другую вкладку, другая страница загружается в другом представлении. Когда я возвращаюсь к первой вкладке, все снова инициализируется, и страница загружается. Есть ли способ, как я могу контролировать это и сохранять активность нижней вкладки в ее текущем состоянии столько, сколько я хочу (и говорю только «обновлять» страницу, когда она изменяется).

мне нужно обрабатывать для этого методы onPause () / onResume () или вместо этого реализовывать мои вкладки как представления одного действия (это вообще возможно?)? Как мне сохранить состояние моей активности, чтобы избежать его повторной инициализации каждый раз?

вот как действия подключаются к вкладкам:

intent = new Intent().setClass(this, tab_schedule.class);
  spec = tabHost.newTabSpec("Schedule").setIndicator("Schedule",
    res.getDrawable(R.drawable.tab_icon_schedule)).setContent(
    intent);
  tabHost.addTab(spec);

tab_schedule.class выполняет простую загрузку веб-страницы:

@Override
 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.tab_people);

  try {

   WebView currentView = (WebView) findViewById(R.id.tab_people_WebView);
   currentView.getSettings().setJavaScriptEnabled(true);
   currentView.loadUrl("http://pda.lenta.ru");

  } catch (Exception e) {
   Log.v("webClientInit", e.getMessage());
  }
 }

Ответы [ 2 ]

3 голосов
/ 25 августа 2010

Если вы не хотите создавать новое действие для каждой вкладки, вы можете использовать TabWidget с FrameLayout для переключения между представлениями.

Что касается переключения действий, см. Это вопрос о способе не воссоздавать действие каждый раз.

В любом случае, вы всегда должны реализовывать onPause и onResume для восстановления состояния вашего приложения.Возможно, вы захотите прочитать о Activity Lifecycle , но, по сути, вы не можете предотвратить уничтожение своей активности, если оно уходит в фон.Таким образом, вы должны хранить свое состояние в onPause.Ссылка выше содержит некоторую информацию о том, как это сделать.

0 голосов
/ 19 декабря 2010

Чтобы вывести предыдущее действие на вершину стека, используйте intent.addFlag (Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

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