Android:if else语句不能在Checkbox上运行

时间:2014-05-15 04:35:01

标签: android checkbox sharedpreferences

我的活动有CheckBox&一个Button。我使用SharedPreferences来保存复选框值。

该按钮保存复选框的值并打开另一个活动。复选框的文字将更好地解释它。

check.setText("Show This Page On Start");

如果选中复选框,则此活动将显示在开始&如果没有,它将开启另一项活动。

当我使用它时,app力关闭。

if (sharedPreferences.getBoolean("check_box_value", "false"))

    {  //launch another activity
    }
    else
    {
// do nothing
}

4 个答案:

答案 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)
     {...}