Anonymous
NullPointerException: попытка вызвать виртуальный метод 'android.view.view android.view.view.findviewbyid (int)' на ссыл
Сообщение
Anonymous » 21 июн 2025, 04:36
Я получаю эту ошибку NullPointerException в Java, пытаясь запустить мое приложение в Android Studio.
ниже мой файл Java < /p>
Код: Выделить всё
package com.example.app;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import android.Manifest;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.example.app.AboutusFragment;
import com.example.app.AddProductFragment;
import com.example.app.AllProductsFragment;
import com.example.app.CartFragment;
import com.example.app.CategoryFragment;
import com.example.app.CatlistFragment;
import com.example.app.ChangePwdFragment;
import com.example.app.ContactusFragment;
import com.example.app.HomeFragment;
import com.example.app.LoginFragment;
import com.example.app.MediMartDbHelper;
import com.example.app.MediMartUtils;
import com.example.app.OrderHistoryFragment;
import com.example.app.OrdersFragment;
import com.example.app.R;
import com.example.app.RegisterFragment;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.snackbar.BaseTransientBottomBar;
import com.google.android.material.snackbar.Snackbar;
import java.util.List;
public class HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout dlayout;
private NavigationView nav;
private ActionBarDrawerToggle drawerToggle;
private Toolbar toolbar;
private SharedPreferences sp;
private MediMartDbHelper db;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
init();
drawerToggle=new ActionBarDrawerToggle(this.getParent(),dlayout,toolbar,R.string.on,R.string.Off);
dlayout.addDrawerListener(drawerToggle);
drawerToggle.syncState();
nav.setNavigationItemSelectedListener(this);
permissions();
MediMartUtils.loadFragment(this,new CategoryFragment());
loadmenu();
}
public void init(){
dlayout=findViewById(R.id.dlayout);
nav= findViewById(R.id.nav_view);
toolbar= findViewById(R.id.toolbar);
tv= nav.getHeaderView(0).findViewById(R.id.tvusername);
sp=getSharedPreferences("users",MODE_PRIVATE);
db=new MediMartDbHelper(this);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("My Shop");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId()==R.id.mcart){
String user=sp.getString("userid","guest");
if(user.equals("guest")) {
MediMartUtils.loadFragment(this, new LoginFragment());
Snackbar.make(getCurrentFocus(),"Please Login First",BaseTransientBottomBar.LENGTH_LONG).show();
}else{
MediMartUtils.loadFragment(this, new CartFragment());
}
}
return super.onOptionsItemSelected(item);
}
public void loadmenu(){
String user=sp.getString("userid","guest");
Menu menu=nav.getMenu();
switch(user) {
case "guest":
Log.d("Nauman", " i am in loadmenu: " + user);
menu.setGroupVisible(R.id.gadmin, false);
menu.setGroupVisible(R.id.guser, false);
menu.setGroupVisible(R.id.gcustomer, false);
tv.setText("Welcome Guest");
break;
case "admin":
Log.d("Nauman", " i am in loadmenu: " + user);
menu.setGroupVisible(R.id.gadmin, true);
menu.setGroupVisible(R.id.guser, true);
menu.setGroupVisible(R.id.gcustomer, false);
tv.setText("Welcome Administrator");
break;
default:
Log.d("Nauman", " i am in loadmenu: " + user);
menu.setGroupVisible(R.id.guser, true);
menu.setGroupVisible(R.id.gcustomer, true);
menu.setGroupVisible(R.id.gadmin, false);
Cursor c=db.findcustomer(user);
c.moveToNext();
tv.setText("Welcome "+c.getString(1));
break;
}
}
private void permissions(){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
if(checkSelfPermission(Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.CALL_PHONE},100);
}
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},200);
}
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment f=null;
switch (item.getItemId()){
case R.id.mhome:
f=new HomeFragment();
break;
case R.id.mcat:
f=new CatlistFragment();
break;
case R.id.mnoti:
f=new OrderHistoryFragment();
break;
case R.id.mproducts:
f=new CategoryFragment();
break;
case R.id.morders:
f=new OrdersFragment();
break;
case R.id.mchangepwd:
f=new ChangePwdFragment();
break;
case R.id.maddpro:
f=new AddProductFragment();
break;
case R.id.mshowall:
f=new AllProductsFragment();
break;
case R.id.mlogout:
SharedPreferences.Editor edit=sp.edit();
edit.remove("userid");
edit.remove("role");
edit.commit();
f=new CategoryFragment();
Toast.makeText(this, "Sign out successfully..", Toast.LENGTH_SHORT).show();
dlayout.closeDrawer(GravityCompat.START);
return MediMartUtils.loadwithoutHistoryFragment(this,f);
case R.id.mcart:
f=new CartFragment();
break;
}
dlayout.closeDrawer(GravityCompat.START);
return MediMartUtils.loadFragment(this,f);
}
@Override
public void onBackPressed() {
if(dlayout.isDrawerOpen(GravityCompat.START)){
dlayout.closeDrawer(GravityCompat.START);
}
if(getSupportFragmentManager().getBackStackEntryCount()==0) {
super.onBackPressed();
}else{
getSupportFragmentManager().popBackStack();
}
}
public void login(View view) {
MediMartUtils.loadFragment(this,new LoginFragment());
}
public void register(View view) {
MediMartUtils.loadFragment(this,new RegisterFragment());
}
public void contactus(View view) {
MediMartUtils.loadFragment(this,new ContactusFragment());
}
public void aboutus(View view) {
MediMartUtils.loadFragment(this,new AboutusFragment());
}
}
< /code>
Вот моя деятельность.
< /code>
И здесь, где идентификатор Tvusername назначается < /p>
< /code>
Я видел много похожих постов, но я попытался учиться у них, но он не резонирует во мне. Я действительно не понимаю, почему эта ошибка брошена в строке 75, что является этой: < /p>
tv= nav.getHeaderView(0).findViewById(R.id.tvusername);
< /code>
и строка 61, которая является этой: (вероятно, потому что ошибка сначала происходит из метода) < /p>
init();
< /code>
Если мне нужно предоставить дополнительную информацию, пожалуйста, дайте мне знать, это мои первые сообщения здесь.Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.app.HomeActivity.init(HomeActivity.java:75)
at com.example.app.HomeActivity.onCreate(HomeActivity.java:61)
Я не уверен, почему она не работает и где ошибка, кажется,
Подробнее здесь:
https://stackoverflow.com/questions/764 ... iew-androi
1750469766
Anonymous
Я получаю эту ошибку NullPointerException в Java, пытаясь запустить мое приложение в Android Studio. ниже мой файл Java < /p> [code]package com.example.app; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import android.Manifest; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.database.Cursor; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.example.app.AboutusFragment; import com.example.app.AddProductFragment; import com.example.app.AllProductsFragment; import com.example.app.CartFragment; import com.example.app.CategoryFragment; import com.example.app.CatlistFragment; import com.example.app.ChangePwdFragment; import com.example.app.ContactusFragment; import com.example.app.HomeFragment; import com.example.app.LoginFragment; import com.example.app.MediMartDbHelper; import com.example.app.MediMartUtils; import com.example.app.OrderHistoryFragment; import com.example.app.OrdersFragment; import com.example.app.R; import com.example.app.RegisterFragment; import com.google.android.material.navigation.NavigationView; import com.google.android.material.snackbar.BaseTransientBottomBar; import com.google.android.material.snackbar.Snackbar; import java.util.List; public class HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private DrawerLayout dlayout; private NavigationView nav; private ActionBarDrawerToggle drawerToggle; private Toolbar toolbar; private SharedPreferences sp; private MediMartDbHelper db; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); init(); drawerToggle=new ActionBarDrawerToggle(this.getParent(),dlayout,toolbar,R.string.on,R.string.Off); dlayout.addDrawerListener(drawerToggle); drawerToggle.syncState(); nav.setNavigationItemSelectedListener(this); permissions(); MediMartUtils.loadFragment(this,new CategoryFragment()); loadmenu(); } public void init(){ dlayout=findViewById(R.id.dlayout); nav= findViewById(R.id.nav_view); toolbar= findViewById(R.id.toolbar); tv= nav.getHeaderView(0).findViewById(R.id.tvusername); sp=getSharedPreferences("users",MODE_PRIVATE); db=new MediMartDbHelper(this); setSupportActionBar(toolbar); getSupportActionBar().setTitle("My Shop"); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search_menu,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if(item.getItemId()==R.id.mcart){ String user=sp.getString("userid","guest"); if(user.equals("guest")) { MediMartUtils.loadFragment(this, new LoginFragment()); Snackbar.make(getCurrentFocus(),"Please Login First",BaseTransientBottomBar.LENGTH_LONG).show(); }else{ MediMartUtils.loadFragment(this, new CartFragment()); } } return super.onOptionsItemSelected(item); } public void loadmenu(){ String user=sp.getString("userid","guest"); Menu menu=nav.getMenu(); switch(user) { case "guest": Log.d("Nauman", " i am in loadmenu: " + user); menu.setGroupVisible(R.id.gadmin, false); menu.setGroupVisible(R.id.guser, false); menu.setGroupVisible(R.id.gcustomer, false); tv.setText("Welcome Guest"); break; case "admin": Log.d("Nauman", " i am in loadmenu: " + user); menu.setGroupVisible(R.id.gadmin, true); menu.setGroupVisible(R.id.guser, true); menu.setGroupVisible(R.id.gcustomer, false); tv.setText("Welcome Administrator"); break; default: Log.d("Nauman", " i am in loadmenu: " + user); menu.setGroupVisible(R.id.guser, true); menu.setGroupVisible(R.id.gcustomer, true); menu.setGroupVisible(R.id.gadmin, false); Cursor c=db.findcustomer(user); c.moveToNext(); tv.setText("Welcome "+c.getString(1)); break; } } private void permissions(){ if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){ if(checkSelfPermission(Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){ requestPermissions(new String[]{Manifest.permission.CALL_PHONE},100); } if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},200); } } } @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment f=null; switch (item.getItemId()){ case R.id.mhome: f=new HomeFragment(); break; case R.id.mcat: f=new CatlistFragment(); break; case R.id.mnoti: f=new OrderHistoryFragment(); break; case R.id.mproducts: f=new CategoryFragment(); break; case R.id.morders: f=new OrdersFragment(); break; case R.id.mchangepwd: f=new ChangePwdFragment(); break; case R.id.maddpro: f=new AddProductFragment(); break; case R.id.mshowall: f=new AllProductsFragment(); break; case R.id.mlogout: SharedPreferences.Editor edit=sp.edit(); edit.remove("userid"); edit.remove("role"); edit.commit(); f=new CategoryFragment(); Toast.makeText(this, "Sign out successfully..", Toast.LENGTH_SHORT).show(); dlayout.closeDrawer(GravityCompat.START); return MediMartUtils.loadwithoutHistoryFragment(this,f); case R.id.mcart: f=new CartFragment(); break; } dlayout.closeDrawer(GravityCompat.START); return MediMartUtils.loadFragment(this,f); } @Override public void onBackPressed() { if(dlayout.isDrawerOpen(GravityCompat.START)){ dlayout.closeDrawer(GravityCompat.START); } if(getSupportFragmentManager().getBackStackEntryCount()==0) { super.onBackPressed(); }else{ getSupportFragmentManager().popBackStack(); } } public void login(View view) { MediMartUtils.loadFragment(this,new LoginFragment()); } public void register(View view) { MediMartUtils.loadFragment(this,new RegisterFragment()); } public void contactus(View view) { MediMartUtils.loadFragment(this,new ContactusFragment()); } public void aboutus(View view) { MediMartUtils.loadFragment(this,new AboutusFragment()); } } < /code> Вот моя деятельность. < /code> И здесь, где идентификатор Tvusername назначается < /p> < /code> Я видел много похожих постов, но я попытался учиться у них, но он не резонирует во мне. Я действительно не понимаю, почему эта ошибка брошена в строке 75, что является этой: < /p> tv= nav.getHeaderView(0).findViewById(R.id.tvusername); < /code> и строка 61, которая является этой: (вероятно, потому что ошибка сначала происходит из метода) < /p> init(); < /code> Если мне нужно предоставить дополнительную информацию, пожалуйста, дайте мне знать, это мои первые сообщения здесь.Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference at com.example.app.HomeActivity.init(HomeActivity.java:75) at com.example.app.HomeActivity.onCreate(HomeActivity.java:61) [/code] Я не уверен, почему она не работает и где ошибка, кажется, Подробнее здесь: [url]https://stackoverflow.com/questions/76416341/nullpointerexception-attempt-to-invoke-virtual-method-android-view-view-androi[/url]