2013-06-19 2 views
0

Я заметил, что если я попытаюсь щелкнуть текущую вкладку, чтобы вернуться к первому экрану этого конкретного действия, действие не произойдет вообще. Хотя многие ответы предлагают включить addFlag (Intent.FLAG_ACTIVITY_CLEAR_TOP), это не происходит вообще.Перезагрузка активности в текущей вкладке

Предположим, что текущая вкладка - это операция поиска. Это было определено в файле MainActivity:

final Intent searchIntent = new Intent().setClass(this, SearchActivity.class); 
    searchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
TabSpec tabSearch = tabHost.newTabSpec(AppConstants.TAG_SEARCH).setIndicator("",resources.getDrawable(R.drawable.tab_search_off_btn)).setContent(searchIntent); 

Навигационный путь будет от SearchActivity -> SearchByBankFragment -> CardListFragment -> CategoryListFragment ->.

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

Скажите, что я находится под CardListFragment, и я решил вернуться на основной уровень SearchActivity, я бы определенно нажал кнопку Tab выше. Но я не уверен, что если я опустил.

Просто, чтобы узнать, связано ли это с onResume, я переопределил метод onResume и добавил команду invalidate или что-то в этом роде.

Я пропустил что-то на уровне фрагмента или в самой основной деятельности?

ответ

0

Похоже, вам просто нужно удалить все фрагменты, сложенные на заднюю часть. Использование popBackStack (null, FragmentManager.POP_BACK_STACK_INCLUSIVE) должно сделать трюк. Назовите это, когда пользователь набрал самую верхнюю вкладку.

+0

I-й чернила в этот момент времени, TabHost не имеет функции для обработки событий, если currentTab совпадает с вкладкой Clicked. Возможно, как некоторые сказали, что для этого нужно создать другой подкласс класса TabHost. –

0

«Похоже, вам просто нужно, чтобы удалить все фрагменты, которые были сложены на backstack. Использование popBackStack (NULL, FragmentManager.POP_BACK_STACK_INCLUSIVE) следует сделать трюк. Вызов что, когда пользователь ударил в том, что наверху самой вкладки. "

Я предполагаю, что вы имеете в виду реализацию этого popStackBack в каждом из фрагментов под этим действием, не так ли? Я пробовал делать onTabChanged, к сожалению, он не работает.

Вот некоторые из основных линий в коде SearchBankFragment я тестирование (это в OnCreateView):

final Activity activity = SearchActivity.activity //parent Activity; 
final TabHost tabHost = (TabHost) activity.getParent().findViewById(android.R.id.tabhost); 

Я просто попытался положить onTabChanged событие, которое я не думаю, что это работает:

tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

     @Override 
     public void onTabChanged(String tabId) { 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.replace(R.id.fragmentContainer, new SearchMainFragment()); 
      ft.remove(SearchBankFragment.this); 
      fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      ft.commit(); 

     } 
    }); 

Примечание: навигация, как: SearchActivity -> SearchMainFragment -> SearchBankFragment -> CardListFragment -> CategoryListFragment -> OfferListFragment -> OfferActivity

Смежные вопросы