2016-07-11 13 views
1
  1. CおよびIは、
  2. (クリアのスタック履歴Activity Bから)、Activity Bための仕上げを呼び出してActivity BonBackPressed()に、IからsetResult()を介してデータを渡すActivity C
  3. を呼び出し中Activity B~Activity Aであるが、Activity AのデータはnullresultCode 0である。

Activity Bからデータを取得する方法Activity AアクティビティA-> B-> Cからナビゲートする - onBackPressed()でCからAへデータを渡す方法は? Bから<code>Activity A</code>コール<code>Activity B</code></li> <li>から

+0

まあ、私は、ATM、まともな重複した質問を見つけることができませんしかし、[この投稿](http:// stac koverflow.com/a/33911485)は、その方法を示しています。 –

答えて

1

Cを開くときにBからfinish()に電話をかけないでください。代わりにstartActivityforResult()でCを呼び出し、BのonActivityResult()がトリガーされたときにデータをBに戻します。以下のような何か:

ActivityB { 
    onCreate(Bundle) { 
     startActivityForResult(ActivityC, 0); 
    } 

    onActivityResult(int, int, Intent){ 
     setResult(resultCode, data); 
     finish(); 
    } 
} 

編集:Bを呼び出すと、実際には同様にあなたの望ましい結果を達成するため必要があるとき

はどうやらフラグIntent.FLAG_ACTIVITY_FORWARD_RESULTを追加します。

のsomethinを学び新しい毎日...これやって複数の方法Where're

+1

getIntent()。putExtra(identifier、dataAsString)で複数のフラグを送信することもできます。次に、onActivityResultでintent.getExtras()を使用してアクセスできます。getString(identifier) – curtainrising

+0

Intent.setFlags(int)、putExtra()でフラグを適用するのは、Intentで渡されたBundleにデータを追加しただけなので、両方の組み合わせを使用して目的の効果を達成する必要があります – Guardanis

+0

@Guardanis 私はAからstartActivityForResult(B)から、Intent.FLAG_ACTIVITY_FORWARD_RESULTでstartActivity()とonBackPressed()でCアクティビティを使用してBからCへの呼び出しを試みましたが、finishおよびsetResult()を呼び出しましたが、Activity AIではreceive nullデータ –

0

  • ストアデータActivity CからApplicationへのオブジェクトだけActivity Aでそれを読むと:

    ((MySuperApplication) getApplication()).setMyData(..); 
    
  • 活動結果

  • として渡します
  • SharedPreferenceのデータをActivity Cに格納し、Activity Aで読んでください。それは複雑なデータ構造だ場合 - 私はあなたが一番好きなものを選択して、オブジェクトをシリアル化するためにgsonを使用してstringとして保存し、その後Activity A

でそれをデシリアライズすることをお勧めしたいです。

0

使用共有好み

C活性

SharedPreferences sf = getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = sf.edit(); editor.putString(key, value); editor.commit();

活動

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); String savedPref = sharedPreferences.getString(key, ""); mOutputView.setText(savedPref);

関連する問題