3

当我尝试获取 Extras 时,我得到了 Fatal Eroorr

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

如何检查是否存在 Extras?

4

4 回答 4

15

尝试这个,

if(getIntent().getExtras().containsKey("Sdacha"))
        {
        String  preview=getIntent().getExtras().getString("Sdacha");

        }

编辑

同样正如 Evos 所建议的,也可以在上面的代码中再添加一层 Null 检查。如果您确定 extras 不会为 null,那么上述方法很好。如果不遵循以下一项。

 if(getIntent().getExtras()!=null)
        {
        if(getIntent().getExtras().containsKey("Sdacha"))
        {
        String  preview=getIntent().getExtras().getString("Sdacha");
        }
        }
于 2012-12-26T07:49:31.977 回答
3

Extras在从中获取某些内容之前检查它是否不为空很容易:

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 回答