从主要活动布局中删除片段后,NavigationView不会注册点击

问题描述

我有以下NavigationView:

<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_vieww09"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    android:padding="2dp"
    style="@style/calculatorButtonText"
    app:menu="@menu/drawer_information"
    />

在onCreate内,我设置了ItemSelected侦听器:

 mNavigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            /*String string = item.toString();
            string = string.replaceAll("[^0-9]","");*/
            item.setChecked(true);
            int position = item.getItemId();

            Log.d("taskstodo","the position: " + position);
            if(position > -1/*string.matches("\\d")*/)
                ShowAnySolutions(String.valueOf(position));
            else Log.d("taskstodo","the string did not match a number: " + position);

            mDrawer.closeDrawers();

            return true;
        }

    });

将片段添加到主布局后,该片段将正确显示。 在添加片段之前,单击会在NavigationView上进行。但是,当我删除片段时,单击不再起作用。

这是我添加片段的方式:

                FragmentTransaction transaction002 = fragmentManager.beginTransaction();
                transaction002.add(R.id.drawer_layout,graph_fragment);
                transaction002.addToBackStack(null);
                transaction002.commit();

用户在片段布局的用户界面内按下按钮后,如何删除片段

//inside the button which lies inside the UI of the fragment layout
go_back.setonClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View view) {
            android.os.Message message = new Message();
            message.what = MainActivity.DESTROY_GRAPH_FRAGMENT;
            MainActivity.yes.sendMessage(message);
        }
    });

这是如何从主布局中删除片段的方法

FragmentTransaction transaction001 = fragmentManager.beginTransaction();
                transaction001.remove(graph_fragment);

                //transaction001.remove(graph_fragment);
                transaction001.commitNow();

我确定这与删除的片段有关,该片段以某种方式导致NavigationView不再注册点击。我无法单击NavigationView内的项目。

任何建议

解决方法

分析主布局后,我发现NavigationView布局上方包含一个布局。

所以,我相信上面的这种布局会导致在删除片段时失去焦点

include布局标签的布局如下:

<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_vieww09"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:padding="2dp"
style="@style/calculatorButtonText"
app:menu="@menu/drawer_information"
/>

//the layout above
<include layout="@layout/scroll_solve"/>

我要做的就是重新排列布局“ scroll_solve”的主布局中的位置,这解决了整个问题。

因此,请确保NavigationView是您在xml文件中添加的最后一个视图

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...