kid*_*uxa 15 android android-fragments back-stack
我看过这篇文章,但这里发布的解决方案对我不起作用:在backstack中获取最新的片段
当我替换另一个片段时,我使用:
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.replace(android.R.id.tabcontent, fragment, tag);
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
所以,请注意我正在使用标签来检测任何片段.
我的问题尤其如下:
假设我有fragment_A,fragment_B和fragment_C.我可以从fragment_A或fragment_B获取fragment_C,并且根据调用的父级,我必须做一些特别的事情.所以,我再次需要恢复后堆栈中的最后一个FRAGMENT.
当我尝试做的时候:
FragmentManager fm = getSupportFragmentManager();
for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
String ide = fm.getBackStackEntryAt(entry).getName();
Log.i("TAG", "Found fragment: " + ide);
}
Run Code Online (Sandbox Code Playgroud)
我得到零.如果我使用getId()代替,我得到数字,所以我尝试做:
int id = fm.getBackStackEntryAt(entry).getId();
Fragment fragment = fm.findFragmentById(id);
Log.i("TAG", "Found fragment: " + fragment.getTag());
Run Code Online (Sandbox Code Playgroud)
但我得到了空的..我不知道还能做什么,所以任何帮助将不胜感激.
编辑:我在onBackPressed(){...}中调用此方法
Pau*_*rke 16
如果您正在使用BackStackEntry.getName(),它应该是:
ft.replace(android.R.id.tabcontent, fragment, tag);
ft.addToBackStack(tag);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16729 次 |
| 最近记录: |