0

I am developing MainContentPage in android studio in which i am working in Navigation View. My code is complete but i am getting Null Exception error in this line of code objectNavigationView.setNavigationItemSelectedListener(this); and in objectBottomNavigationView.setOnNavigationItemSelectedListener here is my complete java code

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, "MainContentPage:"+e.getMessage(), 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, "MainContentPage:"+e.getMessage(), 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, "MainContentPage:"+e.getMessage(), 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, "MainContentPage:"+e.getMessage(), 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, "MainContentPage:"+e.getMessage(), 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, "MainContentPage:"+e.getMessage(), 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, "MainContentPage:"+e.getMessage(), 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();
        }
    }

}

and the error which i am getting is

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.bottomnavigation.BottomNavigationView.setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView$OnNavigationItemSelectedListener)' on a null object reference at Activities.MainContentPage.onCreate(MainContentPage.java:83)

But i am also getting an NullPointerException in this line objectNavigationView.setNavigationItemSelectedListener(this); present onCreate Method

Saad Ebad
  • 35
  • 5
  • The error tells you that you didn't initialize `objectNavigationView`. – Code-Apprentice Mar 30 '21 at 18:59
  • how to initialize it ?? look haven't i initialize it in method attachJavaObjectsToXMLObjects() objectNavigationView.findViewById(R.id.navigationView); objectBottomNavigationView=findViewById(R.id.bottomNavigationBar); – Saad Ebad Mar 30 '21 at 19:16
  • 1
    `objectNavigationView.findViewById(R.id.navigationView);` calls the `findViewById()` method on the reference variable `objectNavigationView`. Instead, you probably mean to do `objectNavigationView = findViewById(R.id.navigationView);` which calls `findViewById()` on the current activity and assigns the return value to `objectNavigationView`. – Code-Apprentice Mar 30 '21 at 20:20

0 Answers0