3

Extrasを取得しようとすると、FatalEroorrが取得されます

try{
        Sdacha=getIntent().getExtras().getString("Sdacha");
        }
        catch(NullPointerException e){}

エクストラの存在を確認するにはどうすればよいですか?

4

4 に答える 4

15

これを試して、

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");
        }
        }
于 2012-12-26T07:49:31.977 に答える
3

Extras何かを取得する前に、nullでないことを確認するのは簡単です。

if (getIntent().getExtras() != null){
     Sdacha=getIntent().getExtras().getString("Sdacha");
}
于 2012-12-26T07:49:34.257 に答える
1
 Bundle bundle = getIntent().getExtras();
 if (bundle != null) {
      String preview = bundle.getString("Sdacha");
      if (preview != null) {
          // do anything  .....
      }
 }
于 2012-12-26T07:51:52.790 に答える
0

これを防ぐために、呼び出しを静的な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はありません。

于 2012-12-26T07:55:21.847 に答える