【发布时间】:2013-02-22 16:15:39
【问题描述】:
我的 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() 中的返回按钮时调用 pop()。
那么,我的问题是有没有办法让我直接从堆栈中获取当前可见片段?
注意:请记住,片段类型不同,而不仅仅是 MyFragment。
【问题讨论】: