Android:从Fragment更改ActionBar菜单项

Android:从Fragment更改ActionBar菜单项,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,有人能举一个快速的例子,说明如何根据片段中发生的事情更改活动操作栏的内容吗?我的意图: 普通菜单项->移动片段中的某些内容->菜单项更改为保存/放弃按钮 我的第一个冲动是在活动和片段中设置广播接收器以进行串扰,但我不确定这是否正确。以下内容适合我。我有一个自定义类,它在片段中实现ListView.MultichoiceModelListener: public void onItemCheckedStateChanged(ActionMode mode, int position, long i

有人能举一个快速的例子,说明如何根据片段中发生的事情更改活动操作栏的内容吗?我的意图:

普通菜单项->移动片段中的某些内容->菜单项更改为保存/放弃按钮


我的第一个冲动是在活动和片段中设置广播接收器以进行串扰,但我不确定这是否正确。

以下内容适合我。我有一个自定义类,它在片段中实现
ListView.MultichoiceModelListener

public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
    // Choose the correct Action Bar menu to display
    int menu = myCondition == true ? R.menu.my_default_menu : R.menu.my_menu_2;

    // Configure to use the desired menu
    mode.getMenu().clear();
    MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(menu);
}

鉴于您如何检测“片段中的某些内容已移动”,扩展
ListView.MultichoiceModelListener
可能不适合您,但希望这能说明如何更改菜单。关键是访问
ActionMode
实例

我想你应该用一个。在拖动事件中,您将启动一个新的ActionMode,它可以使用特定于您希望用户执行的操作的菜单项替换操作栏的内容。一旦用户选择了一个动作,您就完成了动作模式,动作栏将返回到以前的状态。

片段可以更改动作栏中的菜单。为此,您必须在片段的
oncreate()
中添加必要的标志,使用方法
SethasOptions菜单(true)

加载片段后,您将在
onCreateOptions菜单(菜单菜单,菜单充气机)
上获得调用,就像在活动中一样。然后对菜单进行必要的更改


将菜单保存为片段中的全局菜单,并且无论何时,只要您想进行更改,都可以对其进行应用。

不确定ActionBar实例是否有助于您使用菜单,但肯定会有用。。这里有一个办法

尝试使用片段中的onAttach(Activity-Activity)方法从FragmentActivity获取ActionBar

首先,在片段中创建一个全局对象,如下所示

public class YourFragment extends Fragment {

  private YourFragmentActivity context;
}
在YourFragment类中重写此

@Override
public void onAttach(Activity activity){
    context = (YourFragmentActivity)activity;
    super.onAttach(activity);
}
然后在YourFragment中的OnCreate方法中执行以下操作

@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState){
    ...

    android.support.v7.ActionBar actionBar = context.getSupportActionBar();

    ...
}

在哪里可以获得活动的ActionMode实例?你不能使用
getActivity()
而不是设置自己的
上下文
字段吗?你能澄清一下“将菜单保存为全局片段”和“只要你想做更改,就应用它”吗?