Android Fragments 我如何处理点击顶部的应用程序栏按钮切换片段?

ifmq2ha2  于 11个月前  发布在  Android
关注(0)|答案(1)|浏览(71)

我正在使用Android Studio的基本活动模板开发一个Android应用。我在顶部的应用程序栏中添加了一个名为action_book的自定义按钮

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.a2.MainActivity">

    <item
        android:id="@+id/action_book"
        android:orderInCategory="100"
        android:title="@string/action_book"
        android:icon="@drawable/baseline_book_24"
        app:showAsAction="always" />

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        android:icon="@drawable/baseline_settings_24"
        app:showAsAction="always" />
</menu>

字符串
我想实现一个功能,点击这个自定义按钮切换到另一个片段。我想修改onOptionsItemSelected方法来处理这个按钮单击。
目前,我的**onOptionsItemSelected**方法看起来像这样:

override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.action_settings -> true
            else -> super.onOptionsItemSelected(item)
        }
    }


但是,如果这是正确的方法,我不确定如何在此方法中处理我的自定义按钮的单击事件。
如果有人能在这方面指导我,我将不胜感激。任何代码示例或逐步解释将非常感谢。
提前感谢您的帮助!

jqjz2hbq

jqjz2hbq1#

是的,这是正确的方法,只需添加一个函数调用来执行相应的导航到所需的片段。
我已经展示了基本的导航示例,但是我强烈建议使用导航组件来导航,而不是这样。你可以了解更多关于here

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return when (item.itemId) {
        R.id.action_settings -> {
            settings()      // function call to navigate to required fragment
            true
        }
        R.id.action_book -> {
            book()          // function call to navigate to required fragment
            true
        }
        else -> super.onOptionsItemSelected(item)
    }
}

fun book(){
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
                .add(R.id.home_fragment_host, new MyBookFragment())
                .addToBackStack(null)
                .commit();
}

fun settings(){
// write other navigation code here
}

字符串

相关问题