2017-08-16 19 views
0

を閉じました、MainActivity:Androidのアクティビティのセットの活動結果は結果のために活動を開始するには

@Override 
    protected void onActivityResult(int requestCode, int resultCode, @NonNull Intent data) 
{ 
    switch(requestCode) 
    { 
    ...... 
    case EVENT_DETAILS_REQUEST: 
    boolean isEdited = data.getBooleanExtra("isEdited", false); 
    ....... 
    break; 

    } 

} 

「戻る」ハードウェア(またはシステムナビゲーションバー)ボタンを使用している限り、これは問題ありませんDetailsActivityを閉じる。アクティビティを閉じるためにアクティビティの上部にある「戻る」矢印をタップすると、onBackPressedは呼び出されず、onActivityResultのデータはnullになります。

私が働いて、それを管理するために、代わりにonBackPressedの、onStoponFinishを使用しようとしましたが、私はonActivityResultためdataは常にnullを取得しています。

私の問題を解決する正しい方法は何ですか?

+0

menifestファイルでアンドロイド:launchMode = "singleTop"を使用してください。 –

+0

既にあります。 – user1209216

+0

onOptionsItemSelectedコードを貼り付けてください。 –

答えて

3
@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

オーバーライドあなたの細部の活動で、この方法...とハードウェアがbackpressedときには自動的に呼び出され

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == android.R.id.home) { 
     Intent resultIntent = new Intent(); 
     resultIntent.putExtra("isEdited",isEdited); 
     setResult(RESULT_OK,resultIntent); 
      finish(); 
     } 
     return super.onOptionsItemSelected(item); 
    } 
+0

完璧な答え、ありがとう。私はどこに戻って活動をキャプチャするかわからなかったバックプレスイベント。 – user1209216

1

があなたのDetailsActivityでこれを追加、このコード..

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 

      //your code here 

      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
0

0

可能なすべての可能なケースで結果を送信するには、これを行うことができます。

@Override 
public void finish() { 
    Intent data = new Intent(); 
    Intent resultIntent = new Intent(); 
    resultIntent.putExtra("isEdited", isEdited); 
    setResult(RESULT_OK, resultIntent); 
    super.finish(); 
} 
関連する問題