2017-11-24 6 views
-6

私は初心者で、チェックボックスのステータスを保存するのに問題があります。リストを作成する必要があり、それらのオプションはアプリケーション自体にローカルに保存されます。AndroidスタジオのCheckBoxを保存する

コードは1つのみチェックボックスで動作します。別のコードを追加しようとすると、2つ目のチェックボックスは機能しません。最初のチェックボックスと同じデータが保存されます。

public class MainActivity extends AppCompatActivity { 

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

    final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox); 
    final CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    final SharedPreferences.Editor editor = preferences.edit(); 
    if (preferences.contains("checked") && preferences.getBoolean("checked", false) == true) { 
     checkBox.setChecked(true); 
    } else { 
     checkBox.setChecked(false); 

    } 
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      if (checkBox.isChecked()) { 
       editor.putBoolean("checked", true); 
       editor.apply(); 
      } else { 
       editor.putBoolean("checked", false); 
       editor.apply(); 
      } 
     } 
    }); 

    SharedPreferences preferences2 = PreferenceManager.getDefaultSharedPreferences(this); 
    final SharedPreferences.Editor editor2 = preferences2.edit(); 
    if (preferences2.contains("checked") && preferences2.getBoolean("checked", false) == true) { 
     checkBox2.setChecked(true); 
    } else { 
     checkBox2.setChecked(false); 

    } 
    checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      if (checkBox2.isChecked()) { 
       editor2.putBoolean("checked", true); 
       editor2.apply(); 
      } else { 
       editor2.putBoolean("checked", false); 
       editor2.apply(); 
      } 
     } 
    }); 
} 
+0

を使用することができ、ここで英語で質問を投稿してください。そのスペイン語の使用[This](https://es.stackoverflow.com/) – ADM

+0

さて、ちょっと。 –

+0

これは英語のみのサイトです。 – Redman

答えて

0

両方のチェックボックスで同じ共有設定を使用しているため、同じ状態が維持されています。 また、あなたは唯一のエディタ

public class MainActivity extends AppCompatActivity { 

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

final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox); 
final CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
final SharedPreferences.Editor editor = preferences.edit(); 
if (preferences.getBoolean("checkbox1", false) == true) { 
    checkBox.setChecked(true); 
} else { 
    checkBox.setChecked(false); 

} 
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
     if (checkBox.isChecked()) { 
      editor.putBoolean("checkbox1", true); 
      editor.apply(); 
     } else { 
      editor.putBoolean("checkbox1", false); 
      editor.apply(); 
     } 
    } 
}); 


if (preferences.getBoolean("checkbox2", false) == true) { 
    checkBox2.setChecked(true); 
} else { 
    checkBox2.setChecked(false); 

} 
checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
     if (checkBox2.isChecked()) { 
      editor.putBoolean("checkbox2", true); 
      editor.apply(); 
     } else { 
      editor.putBoolean("checkbox2", false); 
      editor.apply(); 
     } 
    } 
}); 

}

+0

Worked、ありがとうございました:D –

+0

Cool @CleideSilva;) – joao86

関連する問題