2013-10-22 87 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類並使用其對象在任何地方訪問它。

相關問題