如何使复选框确定是否应显示活动

时间:2018-08-14 12:09:49

标签: android checkbox sharedpreferences

简单说明:

放置在一个活动(演练)中的复选框应确定是否在第二次应用启动时再次显示此活动。复选框已选中-活动将不再显示,并且应用启动应以MainActivity开始。这样做的简单技巧是什么?如果使用sharedpreferences,是否需要将复选框状态从一个活动传递到另一个活动?我不想使用任何警报框或对话框。

这是我在Preshow.class(活动)中的sharedpreferences尝试:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        final SharedPreferences.Editor editor = preferences.edit();
        if(preferences.contains("checked") && preferences.getBoolean("checked", false) == true){
            radioButton.setChecked(true);
        }else{
            radioButton.setChecked(false);
        }
radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(radioButton.isChecked()){
                editor.putBoolean("isShowOnboarding", true);
                editor.apply();
            }else {
                editor.putBoolean("isShowOnboarding", false);
                editor.apply();
            }}}

MainActivity中的代码:

Boolean isShowOnboarding = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
            .getBoolean("isShowOnboarding", true);

    if (isShowOnboarding) {
        //show walkthrough activity
        startActivity(new Intent(MainActivity.this, Preshow.class));
        finish();
    }

1 个答案:

答案 0 :(得分:0)

首先,让我们重写您的Preshow:

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    final SharedPreferences.Editor editor = preferences.edit();
    checkBox.setChecked(preferences.getBoolean("isShowOnboarding", false));

    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            editor.putBoolean("isShowOnboarding", checkBox.isChecked());
        }
     }

看到了吗?清洁得多。请注意,我将单选按钮更改为复选框,对于二进制(是/否)决策始终使用复选框。另外,我使用相同的SharedPreferences变量(“ isShowOnboarding”)进行检查和存储。

现在,如果要跳过此Preshow类并直接转到MainActivity,则需要创建另一个类,该类将检索“ isShowOnboarding”并检查其是否为真,然后确定用户是否将转到Preshow或Main 。当我们需要在实际启动应用程序之前加载用户数据时,通常会使用“ SplashScreen”活动。