2014-03-31 30 views
1

如何使onpagestarted和onpagefinished中使用的可見性方法檢測是否選中複選框?換句話說,我想修改和使用這個方法的checkBoxes。例如,如果R.id.checkBox1被選中,使R.id.progressbar1可見如果R.id.checkBox1和R.id.checkBox2 BOTH被選中,使R.id.progressbar2可見和不可見的R.id.progressbar1檢測CheckBox是否勾選並調用Visibility - Android

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(); 
     }      

    } 

回答

1

首先,如果你想設置一個活動,我建議你給你默認的preference活動。你爲什麼要顯示進度條。是否用於保存設置。如果是,你不需要使用它。因爲保存設置非常快。

你已經寫了一些保存和讀取設置的東西。你可以像你之前使用過的那樣在你的聽衆中使用它。

您可以使用簡單的,如果對於

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); 
    } 
} 
+0

檢查能否請你試着解釋你想達到什麼樣的?或者只是在你的問題上發佈你的代碼。我認爲你的代碼中錯過了一件簡單的事情?你試過我的答案嗎? –

+0

我重新編輯了我的答案。你能檢查它嗎? –

+0

你期望達到什麼目的?這個代碼是這樣工作的;如果您選中了checkBox_one,它將顯示progressBar1。如果checkBox_one和checkBox_two同時選中,progressBar1將不可見,progressBar2將可見。 –

0

要查詢複選框狀態,使用它的器isChecked()方法:

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