ナビゲーションコンポーネントを使用してナビゲーションドロワーのメニューをクリックした場合、別の目的地に移動する代わりにアクションを実行するにはどうすればよいですか?

Alexa289

Jetpackナビゲーションコンポーネントを使用しようとしています。そのため、ナビゲーションドロワーのメニューをクリックしたときに、目的地から別の目的地に移動する場合、ナビゲーションコンポーネントが自動的に処理します。

しかし、メニューがクリックされた場合にアクションを実行したい。たとえば、引き出しのメニューがクリックされた場合、トーストメッセージを表示したい。

古い方法、つまりフラグメントトランザクションを使用すると、から簡単に確認できonNavigationItemSelectedますが、その方法は見つかりません。

ここに画像の説明を入力してください

では、ナビゲーションコンポーネントでそれを行う方法は?

確認しようとしましたonDestinationChangedが、うまくいきません

override fun onDestinationChanged(controller: NavController, destination: NavDestination, arguments: Bundle?) {

        if (destination.id == R.id.my_destination {

           // show toast in here
           // but it doesn't work
          
        }

    }

これが私のMainActivityです

class MainActivity : AppCompatActivity() {

    private lateinit var navController : NavController
    private lateinit var appBarConfiguration: AppBarConfiguration


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        appBarConfiguration = AppBarConfiguration(setOf(
            R.id.destination_share,
            R.id.destination_message,
            R.id.destination_chat),
            drawer_layout
        )


        // init nav controller
        navController = Navigation.findNavController(this,R.id.nav_host_fragment)

        // set toolbar
        setSupportActionBar(toolbar)

        // set up navigation drawer
        NavigationUI.setupActionBarWithNavController(this,navController, appBarConfiguration)
        NavigationUI.setupWithNavController(navigation_view,navController)

    }

    


    override fun onSupportNavigateUp(): Boolean {
        return NavigationUI.navigateUp(navController,appBarConfiguration)
    }

        
    }
AbdelraZek

メニューのクリックは次のように処理できます

     navView.menu.findItem(R.id.logout)
                .setOnMenuItemClickListener { menuItem: MenuItem? ->
                 // write your code here
                    true
                }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ