私は教育目的のための簡単なアンドロイドアプリケーションを作成しています。私はそれに3つのチェックボックスを持つメニュー項目があります。私のアプリが起動するとすぐに、ユーザーは与えられたチェックボックスから1つ以上を選択することができます。しかし、私はさらなる参照のためにユーザーの選択を保存したいと思います。共有設定を使用して1つのチェックボックスでこれを実現しましたが、1つ以上のチェックボックスが選択されている場合はこれを達成できません。ここに私のコードはありますか:共有設定保存
public class MainActivity extends AppCompatActivity {
static Switch swch;
static TextView onOffBar;
public static boolean red = false;
public static boolean blue = false;
public static boolean green = false;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
SharedPreferences settings = getSharedPreferences("settings", 0);
boolean isChecked = settings.getBoolean("checkbox", false);
MenuItem item = menu.findItem(R.id.red);
// MenuItem item1 = menu.findItem(R.id.blue);
// MenuItem item2 = menu.findItem(R.id.green);
item.setChecked(isChecked);
// item1.setChecked(isChecked);
// item2.setChecked(isChecked);
//return super.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
SharedPreferences settings = getSharedPreferences("settings", 0);
SharedPreferences.Editor editor = settings.edit();
switch (item.getItemId()) {
case R.id.red:
item.setChecked(!item.isChecked());
editor.putBoolean("checkbox", item.isChecked());
editor.commit();
return true;
case R.id.blue:
item.setChecked(!item.isChecked());
editor.putBoolean("checkbox", item.isChecked());
editor.commit();
return true;
case R.id.green:
item.setChecked(!item.isChecked());
editor.putBoolean("checkbox", item.isChecked());
editor.commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
私はどのように共有環境設定を使用してすべてのスイッチケースオプションのためにこれを達成できますか?
ありがとうございました。
@ Devsil..私はこれを試しましたが、アプリケーションが終了すると、チェックボックスの状態は保存されません。私は何を変えるべきですか? – Thomas
それはどういう場合か分からないかもしれませんが、エディタのcommit()をapply()に置き換えてみてください。 – Devsil