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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使复选框确定是否应显示活动相关的知识,希望对你有一定的参考价值。

简单说明:

放置在一个活动(演练)中的复选框应确定是否在第二次应用启动时再次显示此活动。选中复选框 - 将不再显示活动,应用程序启动应以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();
    }
答案

首先,让我们重写你的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”活动。

以上是关于如何使复选框确定是否应显示活动的主要内容,如果未能解决你的问题,请参考以下文章

如何防止在 Android 片段/活动中意外退出应用程序?

如何将它们添加到字典中,并在python中每5个循环后使活动变量成为结尾?

如何在片段中使用与活动中不同的菜单?

Vuelidate:根据其他复选框使字段可选(也应适用于自定义验证)

如何在活动和片段之间传递对象

如何在不单击的情况下显示片段