在当前选项卡中重新加载活动

时间:2013-06-19 09:57:49

标签: android tabactivity

我注意到如果我尝试点击当前标签返回到该特定活动的第一个屏幕,则该操作根本不会发生。虽然许多答案建议包括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的主要级别,我肯定会点击上面的标签按钮。但我不确定的是,如果我省略了。

为了看看它是否与onResume有关,我已经覆盖onResume方法并添加了invalidate命令。

我是否错过了片段级别或主要活动本身的某些内容?

2 个答案:

答案 0 :(得分:0)

听起来你只需要删除堆积在backstack上的所有碎片。使用popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE)应该可以解决问题。当用户点击最顶部的标签时调用它。

答案 1 :(得分:0)

  

“听起来你只需要删除所有碎片   被堆到了靠背上。使用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