Search code examples
javaandroidnullpointerexceptionback

OnBackPress behaving differently in android


I have 3 activities: A,B,C. When I click on an item in RecyclerView in activity A activity B will be opened. There are a few String values which I have passed from A to B.
In activity B when I click on a button I go to activity C. In C when I press back button from my phone(android default back button) it comes back normally to activity B. But I have also put a back button in ToolBar using parent activity. When I press that button it shows me error that the String value trying to retrieve in activity B is null. I understand why the error is showing. It's obviously because there is no string passed from C to B to fetch.
But why am I not getting this error when I press back from my phones default button? How can I solve this?

Activity A

Intent intent = new Intent(getActivity(), Chat.class);
intent.putExtra("Recievers_Id", userId);
intent.putExtra("Recievers_Name", userName);
startActivity(intent);

Activity B

MessageSenderId = mAuth.getCurrentUser().getUid();
MessageRecieverId = getIntent().getStringExtra("Recievers_Id");
MessageRecieverName = getIntent().getStringExtra("Recievers_Name");

Activity C

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Getting an error on

MessageRecieverId = getIntent().getStringExtra("Recievers_Id"); 
MessageRecieverName = getIntent().getStringExtra("Recievers_Name"); 

because obviously nothing to fetch... how do i solve this


Solution

  • Add onClickListener to the back button of your toolbar:

    toolbar.setNavigationOnCLickListener(new View.OnClickListener){
        @Override
        public void onClick(View view) {
            finish();
        }
    });
    

    If you are getting error for null then try this:

    if(getIntent().getStringExtra("Recievers_Id") != null){
        MessageRecieverId = getIntent().getStringExtra("Recievers_Id"); 
    }
    if(getIntent().getStringExtra("Recievers_Name") != null){
        MessageRecieverName = getIntent().getStringExtra("Recievers_Name"); 
    }