【问题标题】:how to set the visibility of menu item while respective fragment is open?如何在相应片段打开时设置菜单项的可见性?
【发布时间】:2018-04-16 06:19:53
【问题描述】:

实际上我正在使用导航抽屉,但在打开相应的片段时,后退按钮菜单项不可见。如何设置菜单项的可见性?谁能帮助我?

    @Override    
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        Fragment fragment = null;
        int id = item.getItemId();


        navigationView.getMenu().getItem(0).setActionView(R.layout.menu_home);
        navigationView.getMenu().getItem(1).setActionView(R.layout.menu_profile);
        navigationView.getMenu().getItem(2).setActionView(R.layout.menu_history);
        navigationView.getMenu().getItem(3).setActionView(R.layout.menu_contact_igrab);
        navigationView.getMenu().getItem(4).setActionView(R.layout.menu_help);
        navigationView.getMenu().getItem(5).setActionView(R.layout.menu_logout);



        if (id == R.id.home) {
            item.setActionView(R.layout.menu_home_blue);

            changeFragments(new CustomerHomeFragment());


        } else if (id == R.id.my_profile) {
            item.setActionView(R.layout.menu_my_profile_blue);
            changeFragments(new CustomerProfileFragment()); } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

【问题讨论】:

  • 您能否分享任何可以更详细地描述您的问题的快照?

标签: android android-fragments navigation-drawer


【解决方案1】:

您可以使用setUserVisibleHint 方法。重写该方法并检查isVisibleToUser参数是否为truegetActivity()不是null

【讨论】:

  • 发布你的代码,你是如何实现它以使菜单项可见的。
【解决方案2】:

使用setChecked() 方法设置选择导航项。 在您的活动中制作方法:

public void setNavigation(int id) {
        navigationView.getMenu().getItem(id).setChecked(true);
    }

现在在您的片段中调用此方法进行导航项选择:

((YourActivity)mContext).setNavigation(int position);

希望对你有帮助!!

【讨论】:

  • 我想在打开相应的片段时选择特定的菜单项。但它需要以前选择的值。
  • 您从 navigationItemSelected 方法调用所有片段?对吗?
  • 是的..但是当我从配置文件片段返回到主页片段时,会选择配置文件菜单项而不是主页菜单项。
  • 是的,这是我在您的个人资料片段调用((YourActivity)mContext).setNavigation(int position); 方法中告诉您的。现在记住位置将是你的家庭片段。我在我的项目中做了同样的事情。它工作正常。
  • 你能告诉我我是如何实现这个方法的吗?
【解决方案3】:

所有item 中的第一组visiblity false 喜欢:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
 <group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_dashboard"
        android:icon="@drawable/ic_dashboard"
        android:title="@string/nav_dashboard"
        android:visible="false" />
</group>
</menu>

现在在Activity 中,您可以像这样显示和隐藏item

NavigationView navigationView = (NavigationView)findViewById(R.id.nav_view);
Menu menu =navigationView.getMenu();
MenuItem nav_dashboard = menu.findItem(R.id.nav_dashboard);
nav_dashboard.setVisible(true);

【讨论】:

  • 但是由于最初所有菜单项的可见性都消失了,所以我如何选择项目..对不起我的英语,我希望你能理解我想说的......
  • 你想显示的项目可以根据任何条件设置可见性为真
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 2018-10-08
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多