0

私はアクティビティB上だといくつかのアクションは、活動結果に要求コードをチェックし、私はstartActivityforResultを使用しているアクティビティB上のアクティビティAを呼んでいるトリガされたとき、私は活動AとBを持っていますアクティビティ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

があなたの 'ActivityBまたはActivityAにonActivityResult'ていますか? –

+0

そのアクティビティB. – DroidDev

+0

なぜあなたは 'intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);'を使用しますか? ActivityBはある時点で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(){ 意図インテント=新しいインテント(Activity_A、Activity_B.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra( "tabIndex"、0); startActivity(インテント); } – DroidDev

+0

そのメソッドのstartActivityは、 'startActivityForResult(intent、code)'に置き換えてください。 –

+0

それは役に立ちません。 – DroidDev

関連する問題