如何处理解决 java 空指针异常时 getIntent.getExtras 返回空值



我有两个活动聊天室活动和chat_message活动。聊天室内部活动我有一个alertDialog,它要求用户提供他们的user_name并将user_name作为字符串传递给下一个chat_message的活动。

警报对话框的代码是

private void request_user_name() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Enter name:");
final EditText input_field = new EditText(this);
builder.setView(input_field);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
          name = input_field.getText().toString();
    }
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        dialogInterface.cancel();
        request_user_name();
    }
});
builder.show();

}

我使用以下代码传递user_name字符串

intent.putExtra("user_name",name);

下面是我收到额外内容的第二个活动中的代码

user_name = getIntent().getExtras().get("user_name").toString();

但是当user_name未设置时,它的应用程序会崩溃并出现java空指针异常错误。

那么如何处理getIntent或当它收到空值或根本没有值时如何设置默认用户名?

提前谢谢。

建议:始终使用常量来放置额外的键。

public static final String EXTRA_USER_NAME = "user_name";

您的解决方案:检查捆绑包是否具有该密钥。

 String user_name = null;
    if (getIntent()!=null && getIntent().getExtras() !=null && getIntent().hasExtra(EXTRA_USER_NAME))
        user_name = getIntent().getStringExtra(EXTRA_USER_NAME);
    if (!TextUtils.isEmpty(user_name)) {
        // TODO: DO HERE YOUR STUFF
    }

如果您不确定是否要传递额外费用,也添加getIntent()!=null && getIntent().getExtras() !=null

正在发生的事情是,沿途的一个模型返回 null,因为它不存在。现在,根据您的代码,它可能是意图、附加内容或名称。在分配名称字符串之前,必须预先检查每个值。

if (getIntent().getExtras() != null
     && getIntent().getExtras().get("user_name")!=null) {
    user_name = getIntent().getExtras().get("user_name");
}

但这确实是一种粗略的方法。你真正想做的是这样的事情:

String name = "";
Intent intent = getIntent();
if (intent != null) {
    ExtrasModel extras = intent.getExtras();
    if (extras != null) {
        name = extras.get("user_name");
    }
}

试试这个:

    String user_name="" ; 
    if(getIntent()!=null){
      if(getIntent().hasExtra("user_name")){
      user_name = getIntent().getStringExtra("user_name");
     }
    }
    if(!TextUtils.isEmpty(user_name)){
     user_name = "Default"; // Or set your default name
   }

TextUtils检查user_name是否为空,如果是,则可以设置默认用户名,否则您的姓名将从以前的活动中传递。

希望这有帮助!

相关内容

  • 没有找到相关文章