2013-10-22 47 views
0

我有3个活动A1,A2,A3如何将字符串传递给已打开的活动?

A1呼叫A2(A1云堆栈)

A2呼叫A3(A2此亦叠加)

和A3调用A1(A1应该叫从堆栈没有新的实例...)

我不想创建A1的新实例只是我想从栈

我想送一些额外的字符串A1调用它,问题就在这里,当我通过使用putExtra发送一些字符串( )到A1,A1看不到它!

我把getIntent()中的onResume()为A1,但它不是在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();  
    } 
} 

回答

1

可以使用一个应用程序级别的静态变量,并从任何你想要的地方设置它的值,然后你可以从你的活动中访问它!

1

如果我没有误解,可以使用startActivityForResultonActivityResult这两个对来完成此行为。另外,Java中的字符串比较通过equals方法进行。 ==比较字符串参考

1

您应该将字符串与equals()进行比较,例如,

if(getIntent().getExtras().getString("ACTIVITY").equals("A3")

随着==你只是比较对象引用,这也可能是这个表达式的值为false的原因。

1

您可以将A1的启动模式设置为“singleTask”,并且您应该从Activity的方法“void onNewIntent(...)”获取意图。

1

您可以使用该变量的共享首选项,或者可以创建gettersetter类并使用其对象在任何地方访问它。

相关问题