如何使复选框确定是否应显示活动
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”活动。
以上是关于如何使复选框确定是否应显示活动的主要内容,如果未能解决你的问题,请参考以下文章
如何将它们添加到字典中,并在python中每5个循环后使活动变量成为结尾?