Home » Android » android – NullPointerException from getExtras()

android – NullPointerException from getExtras()

Posted by: admin June 15, 2020 Leave a comment

Questions:

I’m creating an intent to transfer data from one activity to another like this :

Intent intent = new Intent(this, ActivityHighScore.class);
    intent.putExtra("USERNAME", username);
    intent.putExtra("PLAYERMOVES", playerMoves);

    this.startActivity(intent);

Then i want to check if all of this data exists as the activity starts, as it can be started from other sources without this data being set. Im using this statement:

        Bundle bundle = getIntent().getExtras();

    if (!bundle.getString("USERNAME").equals(null) && bundle.getInt("PLAYERMOVES") != 0){
        String username = bundle.getString("USERNAME");
        int playerMoves = bundle.getInt("PLAYERMOVES");
        addHighScore(username, playerMoves);

    }   

But this causes a null pointerexception and I’m entirely sure how. I thought I was getting to grips with Strings and .equals(), but I think its that… Any help would be greatly appreciated. Thanks.

How to&Answers:

Replace

Bundle bundle = getIntent().getExtras();

    if (!bundle.getString("USERNAME").equals(null) && bundle.getInt("PLAYERMOVES") != 0){
        String username = bundle.getString("USERNAME");
        int playerMoves = bundle.getInt("PLAYERMOVES");
        addHighScore(username, playerMoves);

    } 

with

 if (getIntent().getStringExtra("USERNAME") != null && (getIntent().getIntExtra("PLAYERMOVES", 0) != 0){
        String username = bundle.getString("USERNAME");
        int playerMoves = bundle.getInt("PLAYERMOVES");
        addHighScore(username, playerMoves);

  } 

Answer:

Well, I had a similar problem. In my case the NullPointerException happened when I checked if my bundle.getString() was equal to null.

Here is how I solved it, in my case:

Intent intent = getIntent();        
if(intent.hasExtra("nomeUsuario")){
    bd = getIntent().getExtras();
    if(!bd.getString("nomeUsuario").equals(null)){
        nomeUsuario = bd.getString("nomeUsuario");
    }
}

Answer:

The method which you are doing is correct . The null pointer exception is coming because the fragment is not replaced with the right fragment object.
Here is the working code Activity class

Bundle bundle = new Bundle();
bundle.putString("message", "helloo");
Home tm = new Home();
tm.setArguments(bundle);
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frag,tm).commit();
getSupportActionBar().setTitle("Home");
item.setChecked(true);
drawerLayout.closeDrawers();

the code for receiving in fragment

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    String myValue = getArguments().getString("message");
    Toast.makeText(getActivity(), myValue, Toast.LENGTH_SHORT).show();
    myview = inflater.inflate(R.layout.fragment_home, container, false);
    return myview;
}

Do let me know if it helps!