Intereting Posts
Android-O: сбой приложения с веб-просмотром Android-игра с сервером / клиентом, не работающим с использованием kryonet Как рисовать путь, когда я двигаюсь, начиная с моего текущего местоположения, используя Карты Google Android ImageView должен быть больше экрана Android – создание изображений и значков Traceview не может открыться из DDMS в eclipse Проект библиотеки реализует слияние манифеста? Плагин Eclipse Android не перечисляет атрибуты с автозаполнением для настраиваемого компонента Новая ошибка библиотеки Android Design с AppBarLayout и панелью инструментов Обновление кэша Android Ion Отделив тесты интеграции от модульных тестов в Android Studio Событие исходящего вызова (Android) Пример настраиваемого элемента spinnerDropDownViewResource Как получить и изменить содержимое HTML из WebView с помощью Http Post Как изменить вкладку вкладки навигации по умолчанию на настроенное представление вкладки?

TabHost setCurrentTab только вызывает метод oncreate для Activity in Tab один раз

Я следую примеру здесь:

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

Все работает нормально. В первый раз, когда я нажимаю на каждую вкладку, oncreate метод oncreate для Activity, связанный с этой конкретной вкладкой. Однако последующие выборы вкладки не вызывают этот метод oncreate.

Мне нужно иметь возможность выполнять oncreate (или другой метод) в Activity, который привязан к каждой вкладке, когда эта вкладка выбрана. Я знаю, что могу использовать setOnTabChangedListener , но я не уверен, как получить доступ к Activity, привязанному к вкладке, чтобы я мог вызвать метод oncreate (или другой).

Это вопрос эффективности … поэтому ваш метод onCreate не вызывается дважды или более раз. Способ eaiser для доступа к вашей активности из TabActivity через OnTabChangedListener заключается в следующем:

 public class YourTabActivity extends TabActivity{ public void onCreate(Bundle InSavedInstanceState) { super.onCreate(InSavedInstanceState); final TabHost tabHost = getTabHost(); // blablabla tabHost.setOnTabChangedListener(new OnTabChangeListener() { public void onTabChanged(String tabId) { if( tabId.equals("the_id_of_your_tab") ){ NameOfThatActivity.self.theMethodYouWantToCall(); } } }); } } 

Затем, в вашей дочерней деятельности, у вас есть что-то вроде:

 public class NameOfThatActivity extends Activity{ public static NameOfThatActivity self; // blah blah blah public onCreate(Bundle b){ super.onCreate(b); self = this; } public void theMethodYouWantToCall(){ // do what ever you want here } } 

Это не красота, но она отлично работает.

Посмотрите на метод onStart в классе Activity , я думаю, что вы хотите переопределить это вместо onCreate (или в дополнение к обычному вызову setContentView только в onCreate)

Другой метод, который вы можете вызвать, если используете TabActivity.getCurrentActivity ()

Как отметил @Cristian, это вопрос эффективности. Но вы всегда можете использовать метод onResume () в своей дочерней активности.

 @Override protected void onResume() { super.onResume(); // do work }