共享首选项项目存储

时间:2017-08-16 16:18:52

标签: android sharedpreferences

我正在重新提出这个问题,因为我仍然坚持这个问题。

所以我正在创建一个简单的Android应用程序。我有一个菜单项,其中有3个复选框。一旦我的应用程序启动,用户就可以从给定的复选框中选择一个或多个。但是,我想保存用户选择以供进一步参考。我使用共享首选项为其中一个复选框实现了此功能,但如果选中了多个复选框,则无法实现此目的。这是我的代码:

public class MainActivity extends AppCompatActivity {
    static Switch swch;
    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);
        }
    }

如何使用共享首选项为所有开关案例选项实现此目的?

感谢。

0 个答案:

没有答案