0

フラグメントからナビゲーションドロワーの MenuItem を無効にしようとしていますが、うまくいきません...

フラグメント コード:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.waiting_for_terminal, container, false);

    setHasOptionsMenu(true);
    return rootView;
}

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
       inflater.inflate(R.menu.activity_main_drawer, menu);

        menu.findItem(R.id.nav_amount).setEnabled(false);
        menu.findItem(R.id.nav_return).setEnabled(false);
        menu.findItem(R.id.nav_about).setEnabled(false);
        menu.findItem(R.id.nav_settings).setEnabled(false);

        super.onCreateOptionsMenu(menu, inflater);
    }

MenuItems に対して getTitle() を呼び出すと、正しい値が返されます。しかし、何らかの理由で setEnabled()、setTitle()、setVisible() などが機能せず、値は同じままです...

4

4 に答える 4

0

ああ、悪い...

無効にしたかったのはNavigationViewのMenuItemsでした...

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.getMenu().findItem(R.id.nav_amount).setEnabled(false);

でも助けてくれてありがとう:)

于 2015-12-01T08:26:55.323 に答える
0

NavigationDrawerを切り替えるAppBarのホームボタンを無効にしようとしていると思います。

私が考えることができる最善の方法は次のとおりです。

メソッド onOptionItemSelected:

protected onOptionItemSelected(MenuItem item)
{
   if(item.getItemId() == android.R.id.home)
    {
            // do anything you want here
    }
}

これは、そのホーム ボタンをオーバーライドするのに役立ちます。

さらに、そのハンバーガーアイコンをデフォルトの矢印アイコンに置き換えたい場合は、使用できます

mNavigationDrawer.setDrawerIndicatorEnabled(false);

さらに、引き出しのスワイプ機能も無効にする場合は、次を使用できます

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

それが役に立てば幸い。:)

于 2015-11-30T12:58:13.993 に答える