如何解决NullPointerException:尝试调用虚方法bottomnavigation.BottomNavigationView.setOnNavigationItemSelectedListener
我正在 android studio 中开发 MainContentPage,我在其中使用导航视图。我的代码是完整的,但我在这行代码 objectNavigationView.setNavigationItemSelectedListener(this); 中收到 Null Exception 错误。 并在 objectBottomNavigationView.setOnNavigationItemSelectedListener 中 这是我完整的java代码
public class MainContentPage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener
{
//Fragments Objects
private TextThoughts objectTextThoughts;
private ImageThoughts objectImageThoughts;
private Favorite objectFavorite;
//Java objects for XML
private NavigationView objectNavigationView;
private Toolbar objectToolBar;
private DrawerLayout objectDrawerLayout;
private ImageView header_backgroundProfile;
private CircleImageView header_ProfilePic;
TextView header_userName,header_user_email;
ProgressBar header_progressBar;
private BottomNavigationView objectBottomNavigationView;
//Firebase Veriables
FirebaseAuth objectFirebaseAuth;
FirebaseFirestore objectFirebaseFireStore;
DocumentReference objectDocumentReference;
//class Variables
private String CurrentUserEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_content_page);
objectTextThoughts = new TextThoughts();
objectImageThoughts=new ImageThoughts();
objectFavorite =new Favorite();
changeFragments(objectTextThoughts);
objectFirebaseFireStore =FirebaseFirestore.getInstance();
objectFirebaseAuth=FirebaseAuth.getInstance();
attachJavaObjectToXMLObjects();
setUpDrawerMenu();
getCurrentUserDetails();
objectNavigationView.setNavigationItemSelectedListener(this);
objectNavigationView.bringToFront();
objectBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
try
{
switch(item.getItemId())
{
case R.id.text_thoughts:
changeFragments(objectTextThoughts);
return true;
case R.id.image_thoughts:
changeFragments(objectImageThoughts);
return true;
case R.id.favorite_thoughts:
changeFragments(objectFavorite);
return true;
default:
return false;
}
}
catch(Exception e)
{
Toast.makeText(MainContentPage.this,"MainContentPage:"+e.getMessage(),Toast.LENGTH_SHORT).show();
}
return false;
}
});
}
private void attachJavaObjectToXMLObjects()
{
try
{
objectToolBar.findViewById(R.id.toolBar);
objectDrawerLayout.findViewById(R.id.drawerLayout);
objectNavigationView.findViewById(R.id.navigationView);
objectBottomNavigationView=findViewById(R.id.bottomNavigationBar);
View headerXMLFile=objectNavigationView.getHeaderView(0);
header_backgroundProfile=headerXMLFile.findViewById(R.id.headerProfile_picBack);
header_ProfilePic=headerXMLFile.findViewById(R.id.headerProfilePic);
header_userName=headerXMLFile.findViewById(R.id.header_UserName);
header_user_email=headerXMLFile.findViewById(R.id.header_UserEmail);
header_progressBar=headerXMLFile.findViewById(R.id.header_progressBar);
}
catch(Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
}
private void changeFragments(Fragment objectFragment)
{
try
{
FragmentTransaction objectFragmentTransaction = getSupportFragmentManager().beginTransaction();
objectFragmentTransaction.replace(R.id.container,objectFragment);
objectFragmentTransaction.commit();
}
catch(Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
}
private void setUpDrawerMenu()
{
try
{
ActionBarDrawerToggle objectActionBarDrawerToggle=new ActionBarDrawerToggle(this,objectDrawerLayout,objectToolBar,R.string.open,R.string.close);
objectDrawerLayout.addDrawerListener(objectActionBarDrawerToggle);
objectActionBarDrawerToggle.syncState();
}
catch(Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
try
{
switch (item.getItemId())
{
case R.id.item_profile:
Toast.makeText(this,"Profile is clicked!",Toast.LENGTH_SHORT).show();
return true;
case R.id.item_notifications:
Toast.makeText(this,"Notifications are clicked!",Toast.LENGTH_SHORT).show();
return true;
case R.id.item_setting:
Toast.makeText(this,"Setting is clicked!",Toast.LENGTH_SHORT).show();
return true;
case R.id.text_thoughts:
Toast.makeText(this,"Text Thoughts are clicked!",Toast.LENGTH_SHORT).show();
return true;
case R.id.favorite:
Toast.makeText(this,"Favorite is clicked!",Toast.LENGTH_SHORT).show();
return true;
case R.id.text_signout:
signOutUser();
return true;
default:
return false;
}
}
catch (Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
return false;
}
private void getCurrentUserDetails()
{
try {
CurrentUserEmail = getCurrentLoggedInUser();
if (CurrentUserEmail.equals("No user is logged in"))
{
Toast.makeText(this,"No user is logged in",Toast.LENGTH_SHORT).show();
startActivity(new Intent(this,LoginPage.class));
finish();
}
else
{
header_progressBar.setVisibility(View.VISIBLE);
objectDocumentReference=objectFirebaseFireStore.collection("UserProfileData")
.document(CurrentUserEmail);
objectDocumentReference.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
header_userName.setText(documentSnapshot.getString("username"));
header_userName.setAllCaps(true);
header_user_email.setText(CurrentUserEmail);
String linkOfProfileImage=documentSnapshot.getString("profileimageurl");
Glide.with(MainContentPage.this).load(linkOfProfileImage).into(header_ProfilePic);
Glide.with(MainContentPage.this).load(linkOfProfileImage).into(header_backgroundProfile);
header_progressBar.setVisibility(View.INVISIBLE);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainContentPage.this,"Loading User Details",Toast.LENGTH_SHORT).show();
}
});
}
}
catch (Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
}
private String getCurrentLoggedInUser()
{
try
{
if(objectFirebaseAuth!=null)
{
return objectFirebaseAuth.getCurrentUser().getEmail().toString();
}
else
{
return "No user is logged in";
}
}
catch (Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
return null;
}
}
private void signOutUser()
{
try
{
if(objectFirebaseAuth!=null)
{
objectFirebaseAuth.signOut();
Toast.makeText(this,"You have succeessfully been logged out",Toast.LENGTH_SHORT).show();
startActivity(new Intent(this,LoginPage.class));
closeDrawer();
finish();
}
}
catch(Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
}
private void openDrawer()
{
try
{
objectDrawerLayout.openDrawer(GravityCompat.START);
}
catch(Exception e)
{
Toast.makeText(this,"",Toast.LENGTH_SHORT).show();
}
}
private void closeDrawer()
{
try
{
objectDrawerLayout.closeDrawer(GravityCompat.START);
}
catch(Exception e)
{
Toast.makeText(this,Toast.LENGTH_SHORT).show();
}
}
}
我得到的错误是
引起:java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.bottomnavigation.BottomNavigationView.setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView$OnNavigationItemSelectedListener)'空对象引用 在 Activities.MainContentPage.onCreate(MainContentPage.java:83)
但我在这一行中也收到了 NullPointerException objectNavigationView.setNavigationItemSelectedListener(this); 呈现 onCreate 方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。