Android - 如何在 fragment 类中访问操作栏的菜单项

标签 android

我应该如何访问 fragment 中操作栏的菜单项? 我试过了,但什么也没发生

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub

    switch (item.getItemId()) {
    case R.id.menu_refresh:
        Toast.makeText(getActivity().getApplicationContext(), "clicked", Toast.LENGTH_SHORT).show();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu, inflater);
}

最佳答案

按照以下步骤操作:

  • 在 Fragment 中添加 setHasOptionsMenu(true) 方法。

  • 覆盖 onCreateOptionsMenu(Menu menu, MenuInflater inflater) 和 fragment 中的 onOptionsItemSelected(MenuItem item) 方法。

  • 在 onOptionsItemSelected(MenuItem item) Activity 的方法中, 确保在菜单项操作为时返回 false 在 onOptionsItemSelected(MenuItem item) Fragment 中实现 方法。

例子:

Activity

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.activity_menu_item:
        // Do Activity menu item stuff here
        return true;
    case R.id.fragment_menu_item:
        // Not implemented here
        return false;
    default:
        break;
    }

    return false;
}

fragment

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    ....
}

@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
    // Do something that differs the Activity's menu here
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.activity_menu_item:
        // Not implemented here
        return false;
    case R.id.fragment_menu_item:
        // Do Fragment menu item stuff here
        return true;
    default:
        break;
    }

    return false;
}

关于Android - 如何在 fragment 类中访问操作栏的菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24526783/

相关文章:

android - 带有 setBackgroundResource 和 setImageBitmap 的 ImageView

android - 如何强制 ViewPager 重新实例化其项目

android - 是否有一个 Android 条码库具有可以简单地传递条码位图并返回值的功能?

android - 我可以在一个地方看到所有的字符串值(资源)吗?

android - 如何在android中的fragment中实现menuitem点击监听器

java - 如何将源代码发送给我的客户到应用程序?

android - 动态地将内容添加到线性布局?

c# - 存档的 APK 文件大小非常巨大 - Xamarin.Android

android - 具有复杂Json结构的房间

android - 从 firebase 查询数据