2016-09-04 5 views
0

私はstartActivityForResultを使用して、最初のアクティビティから2番目のアクティビティに切り替わります。 2番目のアクティビティには、ユーザーが選択できる数のチェックボックスがあります。私は第二の活動からの結果を得てfinish()と呼ぶ。Androidでfinish()を呼び出すとアクティビティの状態を保存できますか?

しかし、ユーザーが気分を変えてもう一度アクティビティを開くと、それが再作成され、チェックボックスがオフになります。

どうすれば避けることができますか? finish()を呼び出すと、チェックボックスの状態を保存することはできますか?

答えて

0

finish()に電話すると、システムはアクティビティを強制終了させます。いいえ、このように状態を保存することはできません。

共有設定APIを使用して、キー値のペア形式の基本情報を保持することをお勧めします。

しかし、あなたはこのhttps://developer.android.com/guide/topics/data/data-storage.html

それともこのhttps://developer.android.com/guide/topics/ui/settings.html

+0

は、私は:

SharedPreferences options = getSharedPreferences("options", 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("checkboxState", checkbox.isChecked()); editor.commit(); 

と読み込み]チェックボックスの状態のため、このONSTART内のコード()メソッド:チェックボックスの状態を保存するための第2の活性方法でonStop()でこのコードを追加します。それは私が探しているものではないと思います。 arraylistsやカスタムオブジェクトのような、より複雑なデータを保存する方法が必要です –

+0

シングルトンパターンをチェックしてください。そこにはもっと複雑なものを保存することができます。多くのチュートリアルや例があります。 – masp

+0

@mrezashまた、GSONのようなパーサを使用してSharedPreferenceのjsonとして保存し、必要なときにそれをカスタムオブジェクトやリストに逆解析することもできます。 – AmirG

0

にSharedPreferencesを使用して、それを述べるチェックボックスを保存するための最良の方法をお読みください。私は、Sharedpreference精通

SharedPreferences options = getSharedPreferences("options", 0); 
boolean checkboxState = options.getBoolean("checkboxState", false); 
checkbox.setChecked(checkboxState); 
関連する問題