如何使用复选框确定显示或跳过入职屏幕?

时间:2018-08-09 14:27:27

标签: android checkbox sharedpreferences

我遇到一个问题,我不知道如何保存复选框状态并在sharedpreferences中使用它来显示或跳过应用程序(演练)屏幕。我已经做出了仅在应用程序首次启动时才显示入职屏幕的信息,但这不是我想要的。 我需要使用复选框来允许用户选择是否要在启动时再次显示它。

这是我的入职屏幕布局和课程。

<CheckBox
    android:id="@+id/radiobtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/prevBtn"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="40dp"
    android:buttonTint="@color/white"
    android:checked="false"
    android:text="do not show again"
    android:textColor="@color/white"
    android:textSize="12sp" />

    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("checked", true);
                editor.apply();

            }else {
                editor.putBoolean("checked", false);
                editor.apply();
            }
            }
        }

我知道我自己尝试可能没有意义。我看不到要练习的任何例子。

这是我的共享首选项,可在第二次启动时跳过入职屏幕。此代码属于MainActivity,该活动在入职活动后显示。

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

    if (isFirstRun) {
        //show sign up activity
        startActivity(new Intent(MainActivity.this, Preshow.class));
        finish();
    }


    getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit()
            .putBoolean("isFirstRun", false).commit();

如果您写了我如何使入职屏幕不显示(如果用户选中了入职屏幕活动中的复选框),将不胜感激。

Onboarding screen

1 个答案:

答案 0 :(得分:0)

更改代码如下

SharedPreferences preferences = PreferenceManager.getSharedPreferences("PREFERENCE");
        final SharedPreferences.Editor editor = preferences.edit();

radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(isChecked){
            editor.putBoolean("isShowOnboarding", false);
            editor.commit();

        }else {
            editor.putBoolean("isShowOnboarding", true);
            editor.commit();
        }
        }
    }

将此添加到主要活动

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

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