我的 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");
但是,我必须将所有标签存储在自定义堆栈中,并在每次用户按下后退按钮时调用pop()onBackPressed()
。
所以,我的问题是我有没有办法直接从堆栈中获取当前可见的片段?
注意:请记住,片段类型不同,而不仅仅是 MyFragment。