NullPointerException: попытка вызвать виртуальный метод 'android.view.view android.view.view.findviewbyid (int)' на ссылJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 NullPointerException: попытка вызвать виртуальный метод 'android.view.view android.view.view.findviewbyid (int)' на ссыл

Сообщение Anonymous »

Я получаю эту ошибку 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»