-1

Android Support Design ライブラリから新しい NavigationView を実装してみました。アプリは、NavigationView を保持する Fragment を含む DrawerLayout で構成されます。アイコン付きのシンプルなメニュー。

  1. 項目をチェックせずにアプリを起動しています。

  2. 次に、アイテムがチェックされているアイテムをクリックすると、テキストとアイコンの両方がチェックされた状態を示します。

  3. 次に、スワイプで引き出しを開閉します。選択したアイテムのテキストには選択状態が表示されますが、アイコンには表示されません。一方、上記の項目には、チェックされた状態を示すアイコンがあります。

これはバグですか、それとも何か間違ったことをしましたか?

アプリのスクリーンショットを使用したプロジェクトは、ここで表示できます。

https://bitbucket.org/adirdal/navigationviewtest

4

2 に答える 2

0

あなたと同じ問題に直面しています...(フラグメントからナビゲーションビューを削除しました)。このソリューションは私のために働いています。フラグメントからナビゲーション ビューを削除せずに試すことができます。

この構造を試してください:

public your class
{
private int mNavItemId;
private static final String NAV_ITEM_ID = "navItemId";
onCreate()
{
      if (null == savedInstanceState) {
            mNavItemId = R.id.home;
        } else {
            mNavItemId = savedInstanceState.getInt(NAV_ITEM_ID);
        }

        //call setupnavigationview
        setupnavigationview();
}

private void setupNavigationView() {

        mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
        mNavigationView.getMenu().findItem(mNavItemId).setChecked(true);
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                // update highlighted item in the navigation menu
                menuItem.setChecked(true);
                mNavItemId = menuItem.getItemId();
                mDrawerLayout.closeDrawer(GravityCompat.START);

                    switch (menuItem.getItemId()) {
                    case R.id.id_of_your_menu_item:
                        call your fragment
                        break;

                });

                }

                @Override
    protected void onSaveInstanceState(final Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(NAV_ITEM_ID, mNavItemId);
    }
    @Override
    public boolean onOptionsItemSelected(final MenuItem item) {
        if (item.getItemId() == android.support.v7.appcompat.R.id.home) {
            return mDrawerToggle.onOptionsItemSelected(item);
        }
        return super.onOptionsItemSelected(item);
    }
}           
于 2015-07-02T10:18:36.847 に答える
0

解決策は、NavigationView をフラグメント内ではなく、DrawerLayout に直接配置することです。

于 2015-06-09T11:09:03.303 に答える