在我的应用程序中,我有一个主要活动和几个片段。当用户单击后退按钮时,片段逐个弹出。我想确定当前在后栈中的哪个片段。因此用于通过片段标签名称识别片段。我使用下面的代码段来获取片段标记名称,但它总是返回空值。
FragmentManager fm = MainActivity.this.getSupportFragmentManager();
String fragmentTag = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName();
请帮忙。
编辑,
用标签替换片段,
FragmentManager fm = MainActivity.this.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.activity_main_content_fragment, fragment, text);
答案 0 :(得分:24)
添加/替换TAG时需要提及TAG:
ft.replace(R.id.container, newFragment,"fragment_tag_String");
OR
ft.add(R.id.container, newFragment,"fragment_tag_String");
在BackStack中添加片段为:
ft.addToBackStack("fragment_tag_String");
然后你可以用
重复使用它getSupportFragmentManager().findFragmentByTag("fragment_tag_String");
参考:
执行交易后调用getSupportFragmentManager().executePendingTransactions()
FragmentManager fm = MainActivity.this.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.activity_main_content_fragment, fragment, text);
ft.commit();
fm.executePendingTransactions();
希望它会帮助你ツ
答案 1 :(得分:11)
我发现了我的错误,我忘记将TAG添加到后台。
FragmentManager fm = mainActivity.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.activity_main_content_fragment, fragment, text);
ft.addToBackStack(text);
然后我可以获得当前片段TAG名称,如下所示,
FragmentManager fm = MainActivity.this.getSupportFragmentManager();
String currentFragmentTag = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName();