Я следил за этой серией учебников на YouTube, чтобы создать ящик для моего приложения , и я следил за всем, кроме того, что я не использую фрагменты и вместо этого хочу, чтобы появился тост когда щелкают по опции из меню и по какой-то причине ничего не происходит, когда я щелкаю по опции, хотя я использовал корпус переключателя для обработки выбора элемента.
Я опубликую код ниже, что проще понять мою ситуацию, и если вы хотите, вы можете клонировать репо здесь .
Вот код для MainActivity. java
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.Manifest;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.material.navigation.NavigationView;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private int STORAGE_RPERMISSION_CODE = 1;
private int STORAGE_WPERMISSION_CODE = 2;
private Button newView;
private Button netInfo;
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Context context = MainActivity.this;
netInfo = (Button) findViewById(R.id.netInfo);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
Button requestPermissions = findViewById(R.id.permissions);
requestPermissions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(ContextCompat.checkSelfPermission(context,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
{
Toast.makeText(context, "Permission for external storage granted.", Toast.LENGTH_LONG).show();
}
else if (ContextCompat.checkSelfPermission(context,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED)
{
Toast.makeText(context, "Permission for external storage denied.", Toast.LENGTH_LONG).show();
requestWPermission();
}
}
});
newView = (Button) findViewById(R.id.newView);
newView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openActivity2();
}
});
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.nav_home:
Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_netInfo:
Toast.makeText(this, "NetInfo", Toast.LENGTH_SHORT).show();
break;
case R.id.nav_savePer:
Toast.makeText(this, "SavePer", Toast.LENGTH_SHORT).show();
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)){
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
public void openActivity2()
{
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);
}
private void requestWPermission()
{
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, STORAGE_WPERMISSION_CODE);
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_RPERMISSION_CODE);
}
public void openNetworkPage(View view) {
Intent intent = new Intent(this, NetInfo.class);
startActivity(intent);
}
}
Вот код для деятельности_основы. 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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity"
tools:openDrawer="start">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:menu="@menu/drawer_menu" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/permissions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Permissions" />
<Button
android:id="@+id/newView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:text="code" />
<Button
android:id="@+id/netInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/newView"
android:layout_alignParentRight="true"
android:onClick="openNetworkPage"
android:text="net info" />
</RelativeLayout>
</androidx.drawerlayout.widget.DrawerLayout>
Вот код для ящика_меню. xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_home"
android:title="Home" />
<item
android:id="@+id/nav_about"
android:icon="@drawable/ic_about"
android:title="About" />
<item
android:id="@+id/nav_netInfo"
android:icon="@drawable/ic_info"
android:title="Network Information" />
</group>
<item android:title="Permissions">
<menu>
<item
android:id="@+id/nav_savePer"
android:icon="@drawable/ic_saveper"
android:title="Write External" />
</menu>
</item>
</menu>
Я прошел учебник дважды, проверяя мой код и следуя инструкциям направления, но до сих пор не нашли решение моей проблемы. Я был бы очень признателен, если бы кто-нибудь имел чаевые или знал, что случилось. Спасибо.