如何根据片段更改ActionBar项?

时间:2016-08-07 01:32:32

标签: android android-fragments android-actionbar

我正在尝试在我的应用中的ActionBar上创建一个已选择和未选中的项目。例如,如果用户在ActionBar中单击Item时处于片段中,则ImageView将从灰色方块切换为红色方块,如果他们切换到不同的片段,则返回它仍将被选中。因此,可以根据正方形的颜色以及用户是否点击它来选择或取消选择每个片段。我不确定如何实现这一点,有什么帮助?

2 个答案:

答案 0 :(得分:0)

根据ActionBar中项目的位置,可以将其显示为片段选项。每个被充气的片段都有机会将自己的菜单项膨胀到操作栏中。这可以通过调用fragment的onCreate中的setHasOptionsMenu(true)或者在构造函数中完成。这将导致调用onCreateOptionsMenu / onPrepareOptionsMenu / onOptionsItemSelected方法,这使您有机会根据片段的状态添加您可以控制的菜单项。

答案 1 :(得分:0)

首先,为了保存片段中的状态,您可以使用onSaveInstanceState()来记住您选择的状态。您需要片段上的属性:

    private boolean mSelected;

onSaveInstanceState()覆盖中,您可以保存此值:

    outState.putBoolean("selected", mSelected);

然后在onCreate()中,你可以恢复价值:

    if (savedInstanceState != null) {
        mSelected = savedInstanceState.getBoolean("selected");
    }

onCreateView()中,您使用所选媒体资源设置ImageView

    imageView.setBackground(mSelected ? R.color.gray : R.color.red); // for example

所以现在当你的用户离开片段然后回来时,ImageView将具有与以前相同的选择状态。

接下来是动作栏。片段可以对菜单进行自己的更改。首先,在您的片段setHasMenuOptions(true)中调用onCreateView()。然后,您就像覆盖活动一样覆盖onCreateOptionsMenu()onOptionsItemSelected()