我正在try 将一组片段中的一项添加到选项菜单中.

我已经创建了一个新的MenuFragment类,并为我希望包含菜单项的片段扩展了这个类.以下是代码:

Java :

public class MenuFragment extends Fragment {

    MenuItem fav;

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

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        fav = menu.add("add");
        fav.setIcon(R.drawable.btn_star_big_off);
    }
}

Kotlin :

class MenuFragment : Fragment {

    lateinit var fav: MenuItem

    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        fav = menu.add("add");
        fav.setIcon(R.drawable.btn_star_big_off);
    }
}

由于某种原因,onCreateOptionsMenu似乎没有运行.

推荐答案

调用超级方法:

Java:

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

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Add your menu entries here
        super.onCreateOptionsMenu(menu, inflater);
    }

Kotlin :

    override fun void onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        // TODO Add your menu entries here
        super.onCreateOptionsMenu(menu, inflater)
    }

在代码中放入日志(log)语句,查看是否没有调用该方法,或者菜单是否没有被代码修改.

还要确保您正在拨打onCreate(Bundle)中的setHasOptionsMenu(boolean),以通知片段它应该参与选项菜单处理.

Android相关问答推荐

如何将子零部件的大小调整为可以调整大小的父组件大小?

Jetpack编写使用自定义主题覆盖库中主题部分

避免在按下肯定按钮时自动取消AlertDialog

如何删除Jetpack Compose中的Textfield底线

为什么 Android Compose 将片段作为参数传递给 Composables 函数?

如何在 Jetpack Compose LazyColumn 中将项目分组在一起,例如卡片

如何删除房间数据库?

从 Jetpack Compose 中的 IconButton 中删除黑色色调

如何以编程方式通过 whatsapp android 共享图像和文本

Koin Android-KMM:我有嵌套范围但注入不起作用

在 Jetpack Compose 中单击时更改表面项目的背景 colored颜色

如何在 Jetpack Compose 中添加多个标签

Jetpack Compose Material3 禁用 ListItem

如何修复 api 调用在浏览器中工作但在 android studio 中为 403

我应该使用 Bluetooth Classic 还是 Bluetooth LE 与我的移动应用程序通信?

Android WebView 没有在第一次页面完成时从本地存储读取数据?

如何在 kotlin 的 android room DB 中设置一对多关系

react-native-config 在发布版本中不起作用

如何在 flow.stateIn() 之后从流中的另一个函数发出emits ?

Xamarin 获取动态 ListView DataTemplate 中的按钮单击事件数据