Reputation: 319
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.
Upvotes: 8
Views: 14118
Reputation: 19
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!
Upvotes: -1
Reputation: 447
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");
}
}
Upvotes: 3
Reputation: 23186
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);
}
Upvotes: 18