押されたときにナビゲーションビューの項目が応答しません

Stradtdog:

私はサイドナビゲーション引き出し付きアプリに取り組んでいます。引き出しは罰金を開き、しかしおそらく「クリック可能」することができ、テキストが応答していないようです。アニメーションショーは引き出しがタップされたときにフィードバックがあることは、それのしかし、何も結果(あなたは音を聞くことができます)。私は、ボタンがアクションを登録するかどうかを確認するために、メッセージトースト場所にしようとしたが、している押されたときに、無トーストが表示されます。(私はNavigationView.OnNavigationItemSelectedListenerを実装している)、次のようにコードが行きます:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_driver_home);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_history, R.id.nav_settings,
                R.id.nav_help, R.id.nav_signout)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);

そして私は、メソッドを実装し:

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
        switch (menuItem.getItemId()){
            case R.id.nav_history:
    Toast.makeText(this, "fsdfuxc", Toast.LENGTH_LONG).show();
                break;
            case R.id.nav_help:

                break;
            case R.id.nav_settings:

                break;
            case R.id.nav_signout:
                signOut();
                break;
        }

        DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

ありがとうございました

ianhanniballake:

この線

NavigationUI.setupWithNavController(navigationView, navController);

コールsetNavigationItemSelectedListener内部でのメニュー項目への接続の宛先に(つまり、あなたはをクリックしたときR.id.nav_settingsのMenuItem、それはと1を使用してNavHostFragmentでフラグメントを置き換えますandroid:id="@+id/nav_settings"セット)。このリスナーは上書きされますOnNavigationItemSelectedListener、カスタム・ロジックが実行されない理由であるあなたが設定したビューを、。

あなたが一緒に機能の両方のセットを結合したい場合は、呼び出す必要がありますnavigationView.setNavigationItemSelectedListener(this); setupWithNavControllerとで、デフォルトの動作をトリガーNavigationUI.onNavDestinationSelected()

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_driver_home);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    mAppBarConfiguration = new AppBarConfiguration.Builder(
            R.id.nav_home, R.id.nav_history, R.id.nav_settings,
            R.id.nav_help, R.id.nav_signout)
            .setDrawerLayout(drawer)
            .build();
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(navigationView, navController);
    // This line needs to be after setupWithNavController()
    navigationView.setNavigationItemSelectedListener(this);

}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    switch (menuItem.getItemId()){
        case R.id.nav_history:
            Toast.makeText(this, "fsdfuxc", Toast.LENGTH_LONG).show();
            break;
        case R.id.nav_signout:
            signOut();
            break;
        default:
            // Trigger the default action of replacing the current
            // screen with the one matching the MenuItem's ID
            NavigationUI.onNavDestinationSelected(menuItem, navController);
    }

    DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=362791&siteId=1