检测CheckBox是否已选中并调用Visibility - Android

时间:2014-03-31 14:31:30

标签: android checkbox visibility

如何使onpagestarted和onpagefinished中使用的可见性方法检测是否选中了复选框?换句话说,我想修改并使用此方法用于checkBoxes。例如,如果选中R.id.checkBox1,则使R.id.progressbar1可见并且如果选中R.id.checkBox1和R.id.checkBox2 BOTH,使R.id.progressbar2可见并且R.id.progressbar1不可见

  here is my updated main activity


package com.example.myapp;

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 Settings extends Activity {

CheckBox checkBox_one  = null;
CheckBox checkBox_two = null;
CheckBox checkBox_three = null;
CheckBox checkBox_four = null;
CheckBox checkBox_five = null;
ProgressBar progressBar1;
ProgressBar progressBar2;
CheckBox checkBox1;
CheckBox checkBox2;


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




    progressBar1 = (ProgressBar) findViewById(R.id.progressBar1);
    progressBar2 = (ProgressBar) findViewById(R.id.progressBar2);
    checkBox1 = (CheckBox) findViewById(R.id.checkBox1);
    checkBox2 = (CheckBox) findViewById(R.id.checkBox2);

    checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            updateProgressBars();
        }
    });

    checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            updateProgressBars();
        }
    });
    }

    public void updateProgressBars() {

      progressBar1.setVisibility(View.GONE);
      progressBar2.setVisibility(View.GONE);

     if (checkBox1.isChecked() && checkBox2.isChecked()) {
        progressBar2.setVisibility(View.VISIBLE);
     } else if (checkBox1.isChecked()) {
        progressBar1.setVisibility(View.VISIBLE);
     }






      //SAVE CHECKBOX STATE//

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

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

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

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

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

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

      checkBox_three = (CheckBox) findViewById(R.id.checkBox3);

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

            Settings.this.putBooleanInPreferences(isChecked,"isCheckedThree");
        }
      });

      checkBox_four = (CheckBox) findViewById(R.id.checkBox4);

      boolean isCheckedFour = getBooleanFromPreferences("isCheckedFour");
      checkBox_four.setChecked(isCheckedFour );
      //checkBox_four.setChecked(true);//Enable By Default
      checkBox_four.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton view, boolean isChecked) {

            Settings.this.putBooleanInPreferences(isChecked,"isCheckedFour");
        }
      });

      checkBox_five = (CheckBox) findViewById(R.id.checkBox5);

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

            Settings.this.putBooleanInPreferences(isChecked,"isCheckedFive");
        }
      });

    }

    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;       

    }
    //-------------------------//


    @Override
    public void onBackPressed()
    {
        // Stop back button Functioning
    }

    public void openrate1(View view) { 
    Intent intent = new Intent(this, Rate.class);
    startActivity(intent);
    }

    public void gotohome(View view) { 
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
    }

    public void savesettings(View view) { 
        Toast toast=Toast.makeText(this, "Settings successfully saved!", Toast.LENGTH_LONG); 
        toast.show();   
        }                       

    }

2 个答案:

答案 0 :(得分:1)

首先,如果您想要设置活动,我建议您使用默认的preferenceActivity。你为什么要显示进度条。是用于保存设置。如果是,则不需要使用它。因为保存设置非常快。

您已经写了一些用于保存和阅读设置的内容。您可以像以前一样在听众中使用它。

您可以使用简单的if检查

   package com.example.myapp;

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 Settings extends Activity {

CheckBox checkBox_one  = null;
CheckBox checkBox_two = null;
CheckBox checkBox_three = null;
CheckBox checkBox_four = null;
CheckBox checkBox_five = null;
ProgressBar progressBar1;
ProgressBar progressBar2;


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

    progressBar1 = (ProgressBar) findViewById(R.id.progressBar1);
    progressBar2 = (ProgressBar) findViewById(R.id.progressBar2);

      checkBox_one = (CheckBox) findViewById(R.id.checkBox1);
      checkBox_one.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton view, boolean isChecked) {
            updateProgressBars();
        }
      });

      checkBox_two = (CheckBox) findViewById(R.id.checkBox2);
      checkBox_two.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton view, boolean isChecked) {
            updateProgressBars();
        }
      });   
}

public void updateProgressBars() {

   progressBar1.setVisibility(View.INVISIBLE);
   progressBar2.setVisibility(View.INVISIBLE);

   if (checkBox_one.isChecked() && checkBox_two.isChecked()) {
      progressBar2.setVisibility(View.VISIBLE);
   } else if (checkBox_one.isChecked()) {
      progressBar1.setVisibility(View.VISIBLE);
   }
}

答案 1 :(得分:0)

要查询复选框状态,请使用它的isChecked()方法:

CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox_id);
if (checkBox.isChecked()) {
    checkBox.setChecked(false);
}