2017-09-29 22 views
0

アクティビティが3つあります。彼らはお互いを立ち上げています。アクティビティが終了した後にインテントエクストラのデータを取得

アクティビティA> B> Cの

それらの各々は、次のアクティビティに余分をintent.put使用してデータを渡しています。

問題がある - 私は、アクティビティCに活動Bから移動して戻ってクリックしたときに - 私は、アクティビティBに行くが、回避策として活動A.

// activity A starting activity B 
Intent intent = new Intent(MainActivity.this, ChaptersActivity.class); 
intent.putExtra(CHAPTER_NAME, R.string.chapter_1_title); 
startActivity(intent); 

// Activity B saving data from intent extra in bundle and starting activity 
public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt(MainActivity.CHAPTER_NAME, getIntent().getExtras().getInt(MainActivity.CHAPTER_NAME));  
    } 

Intent intent = new Intent(this, ChapterDetails.class); 
startActivity(intent); 

// after going back from activity C to activity B by pressing back button - method onCreate is called, but Bundle onSaveInstanceState is null. As well as getIntent() is null. 

から意図から元々来たデータを復元することはできません私は、アクティビティBからCに移行するときにstartActivityForResultを考えるか、永続ストレージを使用します。しかし、これが正しい方法であるかどうかは分かりません。任意のヒント?

+0

を作るために、私の活動Cでコードを書く必要があるが、ここで – UltimateDevil

+0

をあなたのコードを投稿ここ – UltimateDevil

+0

をあなたのコードを投稿あなたはSharedPreferencesにデータを格納することができ、またはデータベース(SQLite)内にあり、アプリケーション全体に渡ってデータがあります – Fustigador

答えて

0

いくつかの時間のためのソリューションを探していた後、私はこれを思い付いた:すべての

まず、「戻る」と「アップ」があります。私は私の質問で "アップ"を意味した。上のナビゲーションは、左下または物理的な戻るボタンと同じではありません。マニフェストのupアクティビティの起動モードを "singleTop"に設定しない限り、デフォルトでupアクティビティが再作成されます。

または私は「戻る」などのボタン行為「UP」

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
関連する問題