我有3项活动A1,A2,A3
A1调用A2(A1进入堆栈)
A2调用A3(A2也进入堆栈)
A3调用A1(A1应该从堆栈调用而不是新实例...)
我不想创建A1的新实例,只是想从堆栈中调用它
我想向A1发送一些Extra String,问题在这里,当我通过使用putExtra()向A1发送一些String时,A1看不到它!
我在onResume()中为get添加了getIntent(),但是它没有用...
A3中的代码
Intent in = new Intent(A3.this,A1.class);
in.putExtra("ACTIVITY", "A3");
in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(in);
A1中的代码
@Override
protected void onResume() {
super.onResume();
Log.e("LOG", getIntent().getExtras().getString("ACTIVITY"));
if(getIntent().getExtras().getString("ACTIVITY")=="A3"){
new LoadAllMyOrders().execute();
}else{
new LoadAllMyshops().execute();
}
}
答案 0 :(得分:1)
您可以使用应用程序级静态变量并从您想要的任何位置设置其值, 那么你可以从你的活动中访问它!!
答案 1 :(得分:1)
如果我没有误解,您可以使用startActivityForResult
和onActivityResult
对完成此行为。此外,Java中的字符串比较是通过equals
方法进行的。 ==
比较字符串引用
答案 2 :(得分:1)
您应该将字符串与equals()进行比较,例如
if(getIntent().getExtras().getString("ACTIVITY").equals("A3")
使用==
,您只是比较对象引用,这也可能是此表达式求值为false的原因。
答案 3 :(得分:1)
您可以将A1的启动模式设置为“singleTask”,并且您应该从活动的方法“void onNewIntent(...)”获得意图。
答案 4 :(得分:1)
您可以对该变量使用共享首选项,也可以创建一个gettersetter类并使用其对象在任何地方访问它。