use*_*832 10 android android-fragments
在我的应用程序中,我有一个主要活动和几个片段.当用户单击后退按钮时,片段逐个弹出.我想确定当前在后栈中的哪个片段.因此用于通过片段标签名称识别片段.我使用下面的代码段来获取片段标记名称,但它总是返回null值.
FragmentManager fm = MainActivity.this.getSupportFragmentManager();
String fragmentTag = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName();
Run Code Online (Sandbox Code Playgroud)
请帮忙.
编辑,
用标签替换片段,
FragmentManager fm = MainActivity.this.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.activity_main_content_fragment, fragment, text);
Run Code Online (Sandbox Code Playgroud)
Swe*_*r ツ 26
您需要在添加/替换TAG时提及TAG:
ft.replace(R.id.container, newFragment,"fragment_tag_String");
Run Code Online (Sandbox Code Playgroud)
要么
ft.add(R.id.container, newFragment,"fragment_tag_String");
Run Code Online (Sandbox Code Playgroud)
在BackStack中添加片段为:
ft.addToBackStack("fragment_tag_String");
Run Code Online (Sandbox Code Playgroud)
然后你可以重复使用它
getSupportFragmentManager().findFragmentByTag("fragment_tag_String");
Run Code Online (Sandbox Code Playgroud)
参考:
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();
Run Code Online (Sandbox Code Playgroud)
希望它会帮助你ツ
use*_*832 11
我发现了我的错误,我忘记将TAG添加到后台.
FragmentManager fm = mainActivity.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.activity_main_content_fragment, fragment, text);
ft.addToBackStack(text);
Run Code Online (Sandbox Code Playgroud)
然后我可以得到当前片段TAG名称,如下所示,
FragmentManager fm = MainActivity.this.getSupportFragmentManager();
String currentFragmentTag = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13541 次 |
最近记录: |