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

问题描述 投票:0回答:1

简单说明:

放置在一个活动(演练)中的复选框应确定是否在第二次应用启动时再次显示此活动。选中复选框 - 将不再显示活动,应用程序启动应以MainActivity开头。这样做有什么简单的诀窍?在使用sharedpreferences的情况下,是否需要将复选框状态从一个活动传递到另一个活动?我不想使用任何警告框或对话框。

这是我在Preshow.class(activity)中的共享偏好尝试:

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();
    }
android checkbox sharedpreferences
1个回答
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”活动。

© www.soinside.com 2019 - 2024. All rights reserved.