Extrasを取得しようとすると、FatalEroorrが取得されます
try{
Sdacha=getIntent().getExtras().getString("Sdacha");
}
catch(NullPointerException e){}
エクストラの存在を確認するにはどうすればよいですか?
Extrasを取得しようとすると、FatalEroorrが取得されます
try{
Sdacha=getIntent().getExtras().getString("Sdacha");
}
catch(NullPointerException e){}
エクストラの存在を確認するにはどうすればよいですか?
これを試して、
if(getIntent().getExtras().containsKey("Sdacha"))
{
String preview=getIntent().getExtras().getString("Sdacha");
}
編集
また、Evosが提案したように、上記のコードにNullチェックのレイヤーをもう1つ追加することもできます。エクストラがヌルにならないことが確実な場合は、上記のアプローチが適しています。そうでない場合は、以下の手順に従ってください。
if(getIntent().getExtras()!=null)
{
if(getIntent().getExtras().containsKey("Sdacha"))
{
String preview=getIntent().getExtras().getString("Sdacha");
}
}
Extras
何かを取得する前に、nullでないことを確認するのは簡単です。
if (getIntent().getExtras() != null){
Sdacha=getIntent().getExtras().getString("Sdacha");
}
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
String preview = bundle.getString("Sdacha");
if (preview != null) {
// do anything .....
}
}
これを防ぐために、呼び出しを静的なstartActivityメソッドにカプセル化するのが好きです。これは、フラグメントのnewInstance()と同じパターンです。
public static void startActivity(Activity activity, int param, int flags){
Intent intent = new Intent(activity, MainActivity.class);
intent.setFlags(flags);
intent.putExtra(PARAM, param);
activity.startActivity(intent);
}
そしてもちろん、他のアクティビティからこの方法を使用する場合、NPEはありません。