检查复选框是否已选中,并在onclick中调用intent

时间:2014-05-07 08:05:02

标签: android android-intent

我是android新手,我的代码中有两个复选框和一个按钮。当单击按钮时,它应该显示正常工作的吐司,但是当选中checkbox1时,该按钮应调用另一个意图并显示toast(禁用蓝牙),当复选框2也被选中时,该按钮应该调用另一个意图点击时(如显示另一个吐司)我换句话说,如果同时选中了两个复选框,则单击按钮时应调用三个意图,希望这是明确的。

  public void btd(View view) { 
    BluetoothAdapter blue = BluetoothAdapter.getDefaultAdapter();

        blue.disable();
} (this is not required though, toast will also work)


package com.example.tutorial;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity {

    CheckBox checkBox_one = null;
    CheckBox checkBox_two = null;
    CheckBox checkBox_three = null;
    CheckBox checkBox_four = null;
    CheckBox checkBox_five = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // SAVE CHECKBOX STATE//

        checkBox_one = (CheckBox) findViewById(R.id.checkBox1);

        boolean isChecked = getBooleanFromPreferences("isChecked");
        Log.i("start", "" + isChecked);
        checkBox_one.setChecked(isChecked);
        checkBox_one.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton view, boolean isChecked) {
                Log.i("boolean", "" + isChecked);
                MainActivity.this.putBooleanInPreferences(isChecked,
                        "isChecked");
            }
        });

        checkBox_two = (CheckBox) findViewById(R.id.checkBox2);

        boolean isCheckedTwo = getBooleanFromPreferences("isCheckedTwo");
        checkBox_two.setChecked(isCheckedTwo);
        checkBox_two.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton view, boolean isChecked) {

                MainActivity.this.putBooleanInPreferences(isChecked,
                        "isCheckedTwo");
            }
        });
    }

    public void putBooleanInPreferences(boolean isChecked, String key) {
        SharedPreferences sharedPreferences = this
                .getPreferences(Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putBoolean(key, isChecked);
        editor.commit();
    }

    public boolean getBooleanFromPreferences(String key) {
        SharedPreferences sharedPreferences = this
                .getPreferences(Activity.MODE_PRIVATE);
        Boolean isChecked = sharedPreferences.getBoolean(key, false);
        return isChecked;

    }

    // -------------------------//

    public void optimize(View view) {
        Toast toast = Toast.makeText(this, "Toast",
                Toast.LENGTH_LONG);
        toast.show();
    }

}

我试过这个但是还不完整

if (checkBox_one.isChecked() && checkBox_two.isChecked()) {
            //do something
         } else if (checkBox_one.isChecked()) {
            //do something
         } else if (checkBox_two.isChecked()) {         
            //do something

1 个答案:

答案 0 :(得分:0)

在这种情况下不要使用else if,因为只要1个语句匹配条件(结果为true)另一个 - 如果不进行测试

因此请为每个案例使用单独的if语句。

onClick(View v){

showToast(...);

if(chkButton1.isChecked){
//fo work for chk1
}

if(chkButton2.isChecked){
//fo work for chk2
}

}

http://www.visionsdeveloper.com/tutorial/java/java-decision-making.jsp

  

if语句从上到下执行。其中之一   condition为true,与if语句关联的语句   执行。如果条件都不是,则else语句将为真   执行,只有其中一个语句从else if语句列表执行