Как выполнить метод onCreate, когда выбрана активность в tabLayout?

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

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

Итак, мой вопрос: как заставить действие выполняться onCreate каждый раз, когда оно щелкается в tabLayout? Или, может быть, есть другой способ поместить listView вне onCreate и обновить его или что-то в этом роде?

Это код внутри onCreate, если поможет:

listView = (ListView) findViewById (R.id.mainListView);
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, recordedFilesArray);
listView.setEmptyView(findViewById(R.id.emptyListView));
listView.setAdapter(listAdapter);

Все работает отлично, за исключением того факта, что мне нужно перезапустить приложение для обновления списка.


person Guy    schedule 08.08.2013    source источник
comment
У меня есть два действия в макете вкладок - это устарело уже ~ 2,5 года. Пожалуйста, рассмотрите возможность использования современных замен, таких как FragmentTabHost, ViewPager и индикатор с вкладками или вкладки панели действий.   -  person CommonsWare    schedule 08.08.2013
comment
@CommonsWare Я начал программировать Android/Java только около 2-3 месяцев назад. Так что я действительно не знаю ничего лучше. Не могли бы вы предоставить мне несколько руководств для новичков по этим другим параметрам? Я сам поищу их в Google, но просто спрашиваю, поскольку вы уже упомянули :)   -  person Guy    schedule 08.08.2013
comment
FragmentTabHost есть полный образец в документации Java. Вкладки панели действий описаны в документации, как < a href="http://developer.android.com/training/implementing-navigation/lateral.html" rel="nofollow noreferrer">использование ViewPager. Я уверен, что есть независимые учебники по вкладкам панели действий и параметрам ViewPager, и они также описаны в книгах. FragmentTabHost, вероятно, наименее популярен из трех, хотя он наиболее близок к вашему текущему коду.   -  person CommonsWare    schedule 08.08.2013
comment
@CommonsWare Спасибо за помощь, я все проверю :)   -  person Guy    schedule 08.08.2013
comment
@CommonsWare Я воспользовался вашим советом и начал внедрять FragmentTabHost, но столкнулся с некоторыми трудностями. Я открыл новый вопрос, так как я застрял. Надеюсь, я не слишком много прошу. это вопрос   -  person Guy    schedule 09.08.2013
comment
Увидел и уже ответил.   -  person CommonsWare    schedule 09.08.2013
comment
@CommonsWare большое спасибо, я проверю :)   -  person Guy    schedule 09.08.2013


Ответы (1)


Кто-то дал мне лучшее решение (проверьте комментарии), но я все равно отвечу на свой вопрос. Я провел еще несколько исследований и кое-что нашел.

Это довольно просто. При создании намерения для вкладки вам просто нужно добавить FLAG_ACTIVITY_CLEAR_TOP, и все заработает.

Так:

Intent libraryIntent = new Intent(this, RecordedLibrary.class);
libraryIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
person Guy    schedule 08.08.2013