我在我的MainActivity中有一个ListFragment。这是我如何设置我的片段对象。有没有办法从栈顶获取碎片?
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new MyFragment();
fragmentTransaction.replace(R.id.framecontainer, newFragment, "tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
问题是,当用户按下后退按钮,我必须这样做,至少,通过调用
getActionBar().setTitle(title);
getActionBar().setDisplayHomeAsUpEnabled(isEnabled);
invalidateOptionsMenu();
更改操作栏和菜单我都知道什么样的片段目前呈现,以便我知道如何设置操作栏。我将片段中的设置选项存储为参数。
String title = fragment.getArguments().getString("KEY_TITLE");
boolean isEnabled = fragment.getArguments().getBoolean("KEY_ISENABLED");
我做搜索有关的问题,我意识到我可以通过调用
MyFragment fragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("tag");
然而得到的片段,我要所有的标签存储在自定义堆栈,并调用流行( )每当用户在onBackPressed()
中按下按钮时。
所以,我的问题是,有没有办法让我直接从堆栈中获取当前可见片段?
注意:请记住片段类型不同,不仅仅是MyFragment。
看来,如果我在你的方式做到这一点,我必须设置* * fragmentTransaction.addToBackStack(标签)**;否则,我会得到一个NullPointerException。所以** fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName(); **不参考标记名称 – 2013-02-22 16:59:10
是的...你将不得不检查空值和不良数学((getBackStackEntryCount-1)> 0等)。我有点写得太快了。另外,没有标签添加的fragements会显示为空。 – petey 2013-02-22 17:25:52
如果我使用addToBackStack(null),它会继续工作吗? – umerk44 2016-04-06 20:32:16