考虑应用程序有三个活动,即A1,A2,A3:
A1调用A2并在其中附加一个值为Intent“value”
catch
其中A2接受来自A1的附加值并将其存储在“sample”中:
int
现在控件从A2 .ie转到A3,A2转到A3,现在当A3调用活动A2时出现错误,因为A2有Intent i=new Intent(A1.this,A2.class);
i.putExtra("value",editTextVal); //editTextVal is got from an editText during Runtime
试图从Intent获取附加数据因为A3中使用的Intent没有sample=getIntent().getExtra().getString("value");
就是这个,
.getExtra()
因此出现运行时错误..帮我解决这个问题..
答案 0 :(得分:0)
if(getIntent().hasExtra("value")) {
sample=getIntent().getStringExtra("value");
}
/* while using sample check for null
*/
if(!TextUtils.isEmpty(sample)) {
// use sample here
}
答案 1 :(得分:0)
当你从A3移动到A2时,A2活动会搜索一个Bundle对象,但由于你没有将任何值从A3传递给A2,它会给出零点异常 一种方法是设置一个标志(静态变量),如果FLAG == 1尝试获取Bundle对象,当你在A2活动检查值FLAG上从A1转换为A2时,为它分配任何值,如1。无论何时从A2移动,请确保将FLAG更改为1
以外的其他值 //Declare a Variable FLAG in A1 as
public static int FLAG;
// For transition from A1 to A2
Intent I =new Intent(A1.this,A2.class);
I.putExtras("Key","Value");
FLAG=1;
startActivity(I);
//on your A2 activity
if(A1.FLAG==1)
{
Bundle extras=getIntent().getExtras();
String Value=extras.getString("Key");
}
//When you make a transition to A3
Intent i1=new Intent(A1.this,A2.class);
A.FLAG=2;
startAcitivy(i1);