2013-01-16 18 views
0

我的Android應用程序是從另一個應用程序打開的。 我知道如何將結果返回到活動, 但是當我需要返回到開放應用程序時會發生什麼? 打開應用程序(startActivityForResult)>我的應用程序>活動A>活動B>活動C>打開應用程序。感謝, 沙龍。返回打開android應用程序的結果

+1

咦?嘗試更清楚地解釋。什麼是「開放應用程序」? 「開放應用程序」的哪個組件在你的應用程序中啓動「Activity」?您是否自己編寫了「開放應用程序」(如果不是,它如何知道使用'startActivityForResult(...)'? – Squonk

+0

開放應用程序是可以使用我的應用程序的任何應用程序 不,我沒有寫打開應用程序 開放的應用程序調用我的應用程序的主要活動與一些額外的 我認爲這是相同的情況,當你需要返回結果而不是調用活動,但對一個活動進一步向上堆棧 – sharon

回答

0

您可以再次呼籲開放應用startActivity()打發結果呼叫finish()在每個中間活動onActivityResult()方法級聯的結果回落到開放的應用程序。

+0

如果我理解正確, 第二個選項,每個中間活動都會覆蓋onActivityResult,並簡單地調用finish()? – sharon

+0

是的,我會嘗試第二個選項。第一個選項,開放的應用程序將通過一個額外的活動路徑,我可以打開時完成。選項可能不會_restart_開放的應用程序,而不是_resume_用戶在哪裏。 – Sam

+0

好的,我嘗試了第一個選項,它效果很好。 謝謝你一堆。 – sharon

0

我想我明白你需要什麼。 讓我試着解釋:

主要活動:

//calling your activity from which you expect a result 
Intent intent = new Intent(mContext, ActivityB.class); 
startActivityForRsult(intent, 0); 

活動B:

當你完成這一個,你必須這樣做,

setResult(Activity.RESULT_OK); //This line will do the trick ;) 
finish(); 

回到你的MainActivity你必須OverrideonActivityResult()方法。

@Override 
protected void onActivityResult(int arg0, int arg1, Intent arg2) { 
    super.onActivityResult(arg0, arg1, arg2); 
    if (arg0 == 0) { 
     switch (arg1) { 
     case RESULT_OK: 
       /**DO YOUR CODE HERE.*/ 
     break; 

     default: 
     break; 
     } 
    } 
}; 

讓我知道你的進步。

+0

您正在談論關於結果開始單一活動時的常規情況。 這不是我的問題。 – sharon