Android - Как обновить дисплей после переключения вкладок? - PullRequest
2 голосов
/ 27 июля 2011

У меня есть приложение с TabHost и тремя вкладками. Он является примером того, как я создаю каждую вкладку:

    intent = new Intent().setClass(this, Setup.class); //intent.getClass()
    spec = tabHost.newTabSpec("setup").setIndicator("",
                    res.getDrawable(R.drawable.tab_setup))
                    .setContent(intent);
    tabHost.addTab(spec);

Моя цель при переключении на новую вкладку - вызвать метод, обновляющий информацию, отображаемую на этой вкладке.

Вот вопрос: откуда вкладка знает, что она отображена?

Ответы [ 4 ]

7 голосов
/ 27 июля 2011

Поскольку вы используете Activity для каждой вкладки в TabHost, вы должны использовать вызовы Android lifecycle для обновления информации в вашем пользовательском интерфейсе.

onResumeвызывается каждый раз, когда вы переключаетесь на другую вкладку Activity (затем onPause вызывается в активности последней вкладки).Это сохранит ваш код в нужном месте, если вы когда-нибудь решите использовать другой пользовательский интерфейс для размещения этих действий.

@Override
public void onResume() {
    super.onResume();
    // Update your UI here.
}
0 голосов
/ 27 июля 2011

Я думаю, что целью использования вкладок является загрузка вкладки по первому щелчку, а затем сохранение статичности, пока пользователь не введет команду обновления.Я бы использовал свежую кнопку в меню.

Но если вам нужно обновлять вкладку при каждом нажатии, то почему бы просто не использовать несколько простых кнопок?Когда на них нажимают, вы можете легко поменять области контента.

0 голосов
/ 27 июля 2011

onTabChangeListener работает, если вкладка изменяется, если она не (вы нажимаете на ту же вкладку) не будет вызвана, не уверена, важно это для вашего приложения или нет.

Полагаю, вы могли бы зафиксировать событие нажатия на вкладке , если хотите, чтобы все события, а не только изменения.Я думаю, что причина, по которой второе предложенное решение не работает, заключается в том, что они, кстати, не вызывают super.onClick (событие).

0 голосов
/ 27 июля 2011

Переопределить OnTabChangeListener в вашем классе активности с нужным кодом.

...