我有两个活动ChatRoom活动和chat_message activty。在ChatRoom活动中 我有一个alertDialog,它询问用户的user_name并将user_name作为字符串传递给下一个活动,即chat_message。
alertDialog Box的代码是
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 null指针异常错误。
那么如何处理getIntent或者如何在收到空值或根本没有值时设置默认用户名?
提前致谢。
答案 0 :(得分:0)
试试这个:
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是否为Empty为空,如果是,则可以设置默认用户名,否则您的姓名将从之前的活动中传出。
希望这有帮助!
答案 1 :(得分:0)
正在发生的事情是,其中一个模型返回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");
}
}
答案 2 :(得分:0)
建议:始终使用常量来放置额外的键。喜欢
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
。