2017-05-26 10 views
0

親アクティビティから別のアクティビティに移動する意図を使用し、アクションバーnavを使用して親に戻ると、親アクティビティはすべての変更と値を失いますユーザー)と私はそれを持っているデフォルトのXML表示に戻っています。親アクティビティが子から戻るときにリセットされ続ける

私は私の子供の活動OnCreate関数でこれらを持っている:

ActionBar actionBar = getSupportActionBar(); 
actionBar.setHomeButtonEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 

そしてappropiately私の親アクティビティをラベル:私はそれを保存したり、活動の間を移動する際にそれらの変更を覚えておくようにする必要があり何

android:parentActivityName=".MainActivity" 

答えて

1

、あなたがアンドロイドを設定する必要があります。このようなlaunchMode:

<!-- ACTIVITY --> 
     <activity 
      android:name=".activities.MainActivity" 
      android:configChanges="orientation|screenSize" 
      android:launchMode="singleTask" 
      android:screenOrientation="portrait"/> 

シモンズ:このリンクを起動モードをお読みください。 https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

+0

ニース! "シングルレット"のlaunchmodeの提案もありましたが、あなたが提供した資料を読んだ後、 "singleTask"が最も適切な起動モードであると考えています。追加情報を読んでいただきありがとうございます:) – Destreation

+0

@Destreation実際には、 'singleTask'起動モードの使用は、このような標準ナビゲーションの場合ではなく、非常に特殊な場合(HOME画面の置き換えのような)でのみ使用してください。ここで 'singleTop'の使用は、' MainActivity'の既存のインスタンスに戻るのに十分であるべきです。 'singleTask'起動モードには、あなたの将来の苦痛を引き起こすかもしれない奇妙な動作のホストが伴います。 [Providing UP navigation](https://developer.android.com/training/implementing-navigation/ancestral.html)を読んでください。 –

+0

@DavidWasser:「奇妙な行動」について説明できますか? – MrTy

1

しようとするためのオプションがいくつかあります -

1)startActivityForResult()

2で新しいアクティビティを開始するには)マニフェストファイルには、

はそれが

を役に立てば幸い親アクティビティの android:launchMode="singleTop"を設定しました
0

ナビゲーションボタンをクリックすると、親の新しいインスタンスが作成されている可能性があります。簡単なアプローチは、あなたのアクティビティーを終了することです。バックスタック内のどのアクティビティーも単純に再開されます。

このような何か:マニフェストファイルの

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