2017-06-30 43 views
1

在我的onCheckedChange中,實施的方法不起作用。 所以我有這樣的事情:試圖找出該方法不起作用的原因

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

    switch(buttonView.getId()){ 
     case R.id.cb1: 
      saveInSp("cb1",isChecked); 
      if (isChecked == true){ 
       numberOfTrue++; 

      } 
      else 
      { 
       numberOfTrue--; 

      } 
      break; 
     case R.id.cb2: 
      saveInSp("cb2",isChecked); 
      if (isChecked == true){ 
       numberOfTrue++; 

      } 
      else 
      { 
       numberOfTrue--; 

      } 
      break; 

     case R.id.cb3: 
      saveInSp("cb3",isChecked); 
      if (isChecked == true){ 
       numberOfTrue++; 

      } 
      else 
      { 
       numberOfTrue--; 

      } 
      break; 

     case R.id.cb4: 
      saveInSp("cb4",isChecked); 
      if (isChecked == true){ 
       numberOfTrue++; 

      } 
      else 
      { 
       numberOfTrue--; 

      } 
      break; 

    } 

    saveVariable(numberOfTrue); 
    loadVariable(); 
} 

而且這種方法loadVariable()不叫,我知道,因爲我把對她說:

Log.d("TAG","------"+number); 

,我什麼也看不到在AndroidMonitor,檢查我的方法:

private void loadVariable(){ 

    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); 
    int number = sharedPref.getInt("key2", 0); 
    tv1.setText(""+number); 
    numberOfTrue=number; 
    Log.d("TAG","------"+number); 

} 

通常這胡亞蓉應顯示在textView

的檢查箱號

活動的所有代碼:

@EActivity(R.layout.activity_main2) 
public class Main2Activity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener { 

    private int numberOfTrue; 

    @ViewById(R.id.tv1) 
    TextView tv1; 

    @ViewById(R.id.cb1) 
    CheckBox cb1; 

    @ViewById(R.id.cb2) 
    CheckBox cb2; 

    @ViewById(R.id.cb3) 
    CheckBox cb3; 

    @ViewById(R.id.cb4) 
    CheckBox cb4; 

    @AfterViews 
    void update() { 
     cb1.setChecked(getFromSP("cb1")); 
     cb2.setChecked(getFromSP("cb2")); 
     cb3.setChecked(getFromSP("cb3")); 
     cb4.setChecked(getFromSP("cb4")); 
    } 

    @Click 
    void b2() { 
     Intent output = new Intent(); 
     output.putExtra("number", numberOfTrue); 
     setResult(Activity.RESULT_OK, output); 
     finish(); 
    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


    } 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

     switch(buttonView.getId()){ 
      case R.id.cb1: 
       saveInSp("cb1",isChecked); 
       if (isChecked == true){ 
        numberOfTrue++; 

       } 
       else 
       { 
        numberOfTrue--; 

       } 
       break; 
      case R.id.cb2: 
       saveInSp("cb2",isChecked); 
       if (isChecked == true){ 
        numberOfTrue++; 

       } 
       else 
       { 
        numberOfTrue--; 

       } 
       break; 

      case R.id.cb3: 
       saveInSp("cb3",isChecked); 
       if (isChecked == true){ 
        numberOfTrue++; 

       } 
       else 
       { 
        numberOfTrue--; 

       } 
       break; 

      case R.id.cb4: 
       saveInSp("cb4",isChecked); 
       if (isChecked == true){ 
        numberOfTrue++; 

       } 
       else 
       { 
        numberOfTrue--; 

       } 
       break; 

     } 

     saveVariable(numberOfTrue); 
     loadVariable(); 
    } 

    private boolean getFromSP(String key){ 
     SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE); 
     return preferences.getBoolean(key, false); 
    } 
    private void saveInSp(String key,boolean value) { 
     SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putBoolean(key, value); 
     editor.commit(); 
    } 

    private void saveVariable(int numberOfTrue){ 

     SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPref.edit(); 
     editor.putInt("key2", numberOfTrue); 
     editor.commit(); 

    } 

    private void loadVariable(){ 

     SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); 
     int number = sharedPref.getInt("key2", 0); 
     tv1.setText(""+number); 
     numberOfTrue=number; 
     Log.d("TAG","------"+number); 

    } 
} 

回答

0

你應該update()

cb1.setOnCheckedChangeListener(this); 
cb2.setOnCheckedChangeListener(this); 
cb3.setOnCheckedChangeListener(this); 
cb4.setOnCheckedChangeListener(this); 
REGIST OnCheckedChangeListener給大家 CheckBox
相關問題