Intereting Posts
Рекомендуется ли Android для платформы процессоров Atom? GetSupportFragmentManager (). FindFragmentById () возвращает null Edittext – как скрыть подстрочный Как правильно читать атрибуты из пространства имен android в пользовательских настройках? Создание хеш-ключа для приложения с использованием facebook sdk Установка текста как «основного» в Android Сообщение об ошибке отказано Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare () Как заставить экранную клавиатуру исчезать при изменении фокуса с одного текстового поля на другое Как заблокировать экран устройства Android Показать / скрыть DrawerLayout зависит от текущего фрагмента Должна быть указана цель SDK Почему в ProcessAndroidResources отсутствует атрибут assetsDir? Как выбрать среднюю страницу FragmentPagerAdapter? Набор приложений для Android с несколькими значками запуска запускается с той же активностью, независимо от того, что было выбрано

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 }