当前位置: 首页 > 知识库问答 >
问题:

导航抽屉:如何在启动时设置所选项目?

柴宏阔
2023-03-14

我的代码工作得很好:每次单击导航抽屉中的一个项目时,该项目就会被选中。

当然,我想用一个默认片段(主页)启动应用程序,但导航抽屉没有选中该项目。如何以编程方式选择该项?

public class BaseApp extends AppCompatActivity {

    //Defining Variables
    protected String LOGTAG = "LOGDEBUG";
    protected Toolbar toolbar;
    protected NavigationView navigationView;
    protected DrawerLayout drawerLayout;

    private DateManager db = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.base_layout);

        navigationView = (NavigationView) findViewById(R.id.navigation_view);


        // set the home/dashboard at startup

        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.frame, new DashboardFragment());
        fragmentTransaction.commit();

        setNavDrawer();
    }

    private void setNavDrawer(){

        // Initializing Toolbar and setting it as the actionbar
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Initializing NavigationView

        //Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

            // This method will trigger on item Click of navigation menu
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {


                //Checking if the item is in checked state or not, if not make it in checked state

                // I THINK THAT I NEED EDIT HERE...

                if (menuItem.isChecked()) menuItem.setChecked(false);
                else menuItem.setChecked(true);

                //Closing drawer on item click
                drawerLayout.closeDrawers();


                //Check to see which item was being clicked and perform appropriate action
                switch (menuItem.getItemId()) {    

                    //Replacing the main content with ContentFragment 

                    case R.id.home:

                        DashboardFragment dashboardFragment = new DashboardFragment();
                        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.frame, dashboardFragment,"DASHBOARD_FRAGMENT");
                        fragmentTransaction.commit();
                        return true;
[...]
if (menuItem.isChecked()) menuItem.setChecked(false);
                    else menuItem.setChecked(true);

共有1个答案

邵博远
2023-03-14

使用下面的代码:

navigationView.getMenu().getItem(0).setChecked(true);

在调用setnavdrawer()后调用此方法;

getItem(int index)方法获取menuitem,然后可以调用setchecked(true);对该menuitem,所要做的就是找出默认的元素索引,并用该索引替换0。

onNavigationItemSelected(navigationView.getMenu().getItem(0));

下面由@金斯顿回答。

 类似资料:
  • 问题内容: 我的所有活动中都应该出现一个。 我看到许多与此类似的问题,并找到了一个解决方案,例如通过其他活动扩展MainActivity。 所以我将我的主要活动扩展到了我的第二个活动。但是第二个活动中没有显示抽屉 主要活动 第二活动 问题答案: 在in中,不要调用此方法: 使在保护。并 只需将抽屉标签和重力保持在左侧(或右侧)。

  • 我有一个,它应该出现在我的所有活动中。 我看到了许多类似的问题&找到了一个解决方案,比如用其他活动扩展MainActivity。 所以我把我的主要活动扩展到我的第二个活动。但是抽屉没有在第二个活动中显示 主体活动 二次活动

  • 我是android新手。我想实现一个由项目列表组成的导航抽屉,单击它会打开一个新活动。基本上是所有活动的导航抽屉。当我从导航抽屉中选择一个项目时,特定的活动就会打开。导航抽屉代码是通过执行空活动来实现的。我想在所有活动中实现导航抽屉功能,这些活动被视为空活动,这些活动已经有了一些功能,导航抽屉功能也可以工作。请帮帮我。 这是activity_header档案 这是我的主要活动 这是头活动java代

  • 我在我的应用程序中使用了可以在android工作室添加的抽屉菜单,我在导航抽屉中添加了一些菜单条目(参见代码块)。如果我按下第一个项目(nav_home)或第二个,导航抽屉会突出显示当前按下的项目。 如果我按下项目“nav_information”按钮或其他项目,则会打开新的(单击的)片段,并且看不到突出显示(主页或第二个项目仍突出显示) 很快,只有第一个项目在选定的项目上显示突出显示。 这是我处

  • 我正在我的应用程序中使用新的导航抽屉。它很棒,除了我没有找到一种简单的方法来设置抽屉是如何打开的。默认行为是从屏幕的左边缘拖动打开。这很好,除非手机/桌子有一个外壳,并且手机的边缘不能被触摸。我想允许用户触摸并从屏幕的边缘向左拖动。这很容易与其他导航抽屉库(滑动库)一起设置。不幸的是,我没有看到谷歌的库有任何东西。 对于NavigationLayout,可以使用一个onTouchEvent()方法