我有一个活动“ B”。我还有2个活动A和C。两个活动都导致B。但是我传递的A和C的数据不同。因此,在获取数据时
String dataFromA = getIntent.getStringExtra("SomethingA");
String dataFromC = getIntent.getStringExtra("SomethingC");
如何不出错。我不知道用户从哪里开始进行活动B,所以我如何添加If语句或seomthing以便在获取时不会出错,因为A或C行都将获取NullPOinterException
答案 0 :(得分:3)
您可以使用hasExtra方法检查该String是否存在。
if (getIntent().hasExtra("SomethingA")) {
String dataFromA = getIntent.getStringExtra("SomethingA");
} else if (getIntent().hasExtra("SomethingC")) {
String dataFromC = getIntent.getStringExtra("SomethingC");
}
答案 1 :(得分:0)
您可以尝试使用此代码。
Bundle arguments = getArguments();
if (arguments != null){
if (arguments.containsKey("SomethingA")) {
String somethingA = arguments.getString("SomethingA");
if (TextUtils.isEmpty(somethingA)){
// Your codes comes here
}
}
}
如果没有传递数据,则bundle(参数)可以为null。
答案 2 :(得分:-1)
要检查字符串是否为空,请使用以下代码:
if(TextUtils.isEmpty(yourString))
{
// String empty
}
else
{
// string not empty
}
在您的情况下,您将其检查为:
if (getIntent()!=null && getIntent().getStringExtra!=null )
{
if (getIntent().hasExtra("SomethingA") && getIntent().hasExtra("SomethingB"))
String dataFromA = getIntent.getStringExtra("SomethingA");
String dataFromB = getIntent.getStringExtra("SomethingB");
}