0

我有活動A和B.當我在活動B上,並且一些動作被觸發時,我正在調用活動A.在活動B上,我使用startActivityforResult,檢查活動結果上的請求代碼並在活動A被調用後在UI上顯示警告對話框。但我的onActivityresult不叫,因此我的對話框。onActivityforResult沒有觸發/調用

下面是我的代碼片段。

public void Logout() { 
     autoLogoutHandler.removeMessages(MSG_APP_LOGOUT); 
     Intent intent = new Intent(Activity_B.this, 
       Activity_A.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivityForResult(intent, OPEN_NEW_ACTIVITY); 
    } 

而且我onActivityResult我檢查了我的請求的代碼,但它從來沒有 調用。

@Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (requestCode == OPEN_NEW_ACTIVITY) { 
       alert = new AlertDialog.Builder(getBaseContext()) 
         .setTitle(null) 
         .setMessage(getString(xxxx)) 
         .setIcon(null) 
         .setPositiveButton(getString(xxxx), new DialogInterface.OnClickListener() { 

          public void onClick(DialogInterface dialog, int whichButton) { 


          } 
         }).show(); 
      } 
    } 

有人可以幫助我,爲什麼我的onActivityResult不叫?

+0

是您'onActivityResult'上ActivityB或ActivityA? –

+0

它對活動B. – DroidDev

+0

爲什麼你使用'intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);'? ActivityA是否在ActivityB之前啓動? – rubenlop

回答

0

你的流量是目前

A -> opens -> B -> start onActivityResult -> A // doesn't work

你應該做的,而不是:

A- > start onActivityResult -> B -> setResult() & finish() -> A -> handles onActivityResult -> voila!

活動的呼叫&等待活動B,這個活動後過程的信息它就會需要返回操作結果是否成功RESULT_OK或失敗/取消RESULT_CANCELED

活動B關閉後,活動A將執行onActivityResult方法,並作爲最佳實踐,您將檢查其requestCode從startActivityForResult打了個電話,然後檢查操作是否全成或不...

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == 1) { 
    if (resultCode == RESULT_OK) { 
     // do work if successful 
    } 
} 
... 

Undestanding onActivityResult按照文件: https://developer.android.com/training/basics/intents/result.html

+0

這就是我打電話給我的Activity_B。當我在Activity_B上時,我在其中有不同的片段..從其中一個片段中,我將從應用程序註銷到Activity_A(登錄屏幕)。我不想在從Activity_A到Activity_B時使用startacitivityForResult,因爲沒有結果檢查。 public void Activity_B(){ Intent intent = new Intent(Activity_A,Activity_B.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(「tabIndex」,0); startActivity(intent); } – DroidDev

+0

該方法的startActivity應該由'startActivityForResult(intent,code)'代替' –

+0

這沒有幫助。 – DroidDev