我的活动有CheckBox
&一个Button
。我使用SharedPreferences
来保存复选框值。
该按钮保存复选框的值并打开另一个活动。复选框的文字将更好地解释它。
check.setText("Show This Page On Start");
如果选中复选框,则此活动将显示在开始&如果没有,它将开启另一项活动。
当我使用它时,app力关闭。
if (sharedPreferences.getBoolean("check_box_value", "false"))
{ //launch another activity
}
else
{
// do nothing
}
答案 0 :(得分:2)
// Try this way,hope this will help you...
**activity_main.xml**
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp" >
<CheckBox
android:id="@+id/chkShowThisPage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show This Page On Start"
android:checked="true"/>
<Button
android:id="@+id/btnGetCheckBoxValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout
**MainActivity.java**
public class MainActivity extends Activity{
private CheckBox chkShowThisPage;
private Button btnGetCheckBoxValue;
SharedPreferences sharedPreferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chkShowThisPage = (CheckBox) findViewById(R.id.chkShowThisPage);
btnGetCheckBoxValue = (Button) findViewById(R.id.btnGetCheckBoxValue);
sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE);
if(!sharedPreferences.getBoolean("showThisPage",true)){
Intent intent = new Intent(this,YourAnotherActivity.class);
startActivity(intent);
finish();
}
btnGetCheckBoxValue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("showThisPage",chkShowThisPage.isChecked());
editor.commit();
Intent intent = new Intent(MainActivity.this,YourAnotherActivity.class);
startActivity(intent);
finish();
}
});
}
}
答案 1 :(得分:1)
if (sharedPreferences.getBoolean("check_box_value", false))
{ //launch another activity
}
else
{
// do nothing
}
这是访问布尔值的正确方法
答案 2 :(得分:1)
你在getBoolean中传递字符串(在你的代码中看到“false”。它的意思是这是你需要在没有“”的情况下传递false的字符串。)这不是正确的方法。这样做
boolean isChecked = sharedPreferences.getBoolean("check_box_value", false)
if (isChecked)
{
//launch another activity
}
else
{
// do nothing
}
答案 3 :(得分:0)
如果未设置,则传递String作为SharedPreference的默认值,这可能会导致您的应用为FC。
尝试编写条件,将布尔值作为默认值传递:
if (sharedPreferences.getBoolean("check_box_value", false)
{...}