Панель навигации перестает работать после перехода к другим действиям - PullRequest
0 голосов
/ 23 апреля 2020

Я создал блок навигации в своем приложении, и он работает нормально. Я смог видеть список меню и взаимодействовать с ним. Затем я планировал использовать один и тот же блок навигации во всех действиях моего приложения, поэтому я расширил класс NavigationBar в своей функции MainActivity. .

После расширения его в базовом классе я могу видеть значок гамбургера в левой верхней части моей MainActivity, но когда я щелкаю по нему, он не открывает ящик.

Я много пробовал, но не смог найти проблему и запутался в том, что вызвало эту проблему? Здесь код ..

action_navigation_bar. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawyerId"
tools:context=".MainActivity">

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent">

    <TextView
        android:id="@+id/textview"
        android:layout_width="65dp"
        android:layout_height="16dp"
        android:text="navbar"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

<com.google.android.material.navigation.NavigationView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/navigationViewId"
    app:menu="@menu/nav_menu"
    android:layout_gravity="start"/>
</androidx.drawerlayout.widget.DrawerLayout>

Панель навигации. java

package com.security.navbartry;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;

import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.android.material.navigation.NavigationView;

public class NavigationBar extends AppCompatActivity implements 
NavigationView.OnNavigationItemSelectedListener  {
public ActionBarDrawerToggle mToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_navigation_bar);
    DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawyerId);
    NavigationView navigationView =(NavigationView)findViewById(R.id.navigationViewId);

    mToggle=new ActionBarDrawerToggle(NavigationBar.this, mDrawerLayout,R.string.open,R.string.close);
    mDrawerLayout.addDrawerListener(mToggle);
    mToggle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    if(mToggle.onOptionsItemSelected(item))
    {
        return true;
    }
    return super.onOptionsItemSelected(item);

}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
    int id = menuItem.getItemId();
    if(id == R.id.listAppsId)
    {
        Toast.makeText(this, "app list clicked", Toast.LENGTH_LONG).show();

    }
    if(id == R.id.scanFilesId)
    {
       Toast.makeText(this, "file scan clicked", Toast.LENGTH_SHORT).show();

    }
    if(id == R.id.networkAccessId)
    {
        Toast.makeText(this, "network access clicked", Toast.LENGTH_SHORT).show();

    }
    if(id == R.id.restrictNetworkId)
    {
        Toast.makeText(this, "restrict network clicked", Toast.LENGTH_SHORT).show();

    }
    return false;
   }
   }

nav_menu. xml

Файл nav_menu находится в res-> menu

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/listAppsId"
    android:title="App List"/>
<item android:id="@+id/scanFilesId"
    android:title="File Scan" />
<item android:id="@+id/networkAccessId"
    android:title="Network Access" />
<item android:id="@+id/restrictNetworkId"
    android:title="Restrict Network" />
</menu>

MainActivity. java

package com.security.navbartry;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Window;

import com.google.android.material.navigation.NavigationView;

public class MainActivity extends NavigationBar  {

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