Android 在按下另一个按钮重置它并启用按钮之前,在保存时禁用按钮?
Android disabling button on save until another button is pressed to reset it and reenable button?
我基本上有一个按钮可以将数据保存到共享首选项中。
我想做的是禁用该按钮,直到按下重置按钮,清除共享首选项中的数据,然后重新启用保存按钮。
我一直在尝试使用,但是当我保存后回到屏幕时,它又被启用了:
button.setEnabled(true);
有什么想法吗?
我的代码:
public class Settings extends Activity {
EditText editText, editText2, editText3;
RadioGroup radioSexGroup, radioTargetGroup;
Button button, resetbutton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
editText3 = (EditText) findViewById(R.id.editText3);
button = (Button) findViewById(R.id.button8);
button.setOnClickListener(new Button_Clicker());
resetbutton = (Button) findViewById(R.id.resetbutton);
resetbutton.setOnClickListener(new reset_clicker());
loadSavedPreferences();
}
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
String weight = sharedPreferences.getString("storedweight", "Your Weight");
editText.setText(weight);
String age = sharedPreferences.getString("storedage", "Your Age");
editText2.setText(age);
String height = sharedPreferences.getString("storedheight", "Your Height");
editText3.setText(height);
RadioButton male = (RadioButton)findViewById(R.id.radioMale);
RadioButton female = (RadioButton)findViewById(R.id.radioFemale);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
RadioButton strength = (RadioButton)findViewById(R.id.radioStrength);
RadioButton fitness = (RadioButton)findViewById(R.id.radioGeneralFitness);
if(sharedPreferences.getBoolean("is_strength", false))
strength.setChecked(true);
else
fitness.setChecked(true);
}
private void savePreferences(String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
private void saveGenderInPreference() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
int selectedId = radioSexGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioMale)
editor.putBoolean("is_male", true);
else
editor.putBoolean("is_male", false);
editor.commit();
}
private void saveTargetinPreference(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioTargetGroup = (RadioGroup) findViewById(R.id.radioTarget);
int selectedId = radioTargetGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioStrength)
editor.putBoolean("is_strength", true);
else
editor.putBoolean("is_strength", false);
editor.commit();
}
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
if
(//("\d+(?:\.\d+)?"))
//(editText.getText().toString().matches("[a-zA-Z]+") || editText2.getText().toString().matches("[a-zA-Z]+") && editText3.getText().toString().matches("[a-zA-Z]+"))
(editText.getText().toString().trim().length() == 0 || editText2.getText().toString().trim().length() == 0 || editText3.getText().toString().trim().length() == 0)
) {
Toast.makeText(getApplicationContext(), "Please enter values in all the fields!", Toast.LENGTH_LONG).show();
return;
}
int age = Integer.parseInt(editText2.getText().toString());
if (age < 18){
Toast.makeText(getApplicationContext(), "Please enter a valid age!", Toast.LENGTH_LONG).show();
return;
}
savePreferences("storedweight", editText.getText().toString());
savePreferences("storedage", editText2.getText().toString());
savePreferences("storedheight", editText3.getText().toString());
saveGenderInPreference();
saveTargetinPreference();
finish();
}}
class reset_clicker implements Button.OnClickListener {
public void onClick(View v) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // here you get your prefrences by either of two methods
Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
editText.setText("");
editText2.setText("");
editText3.setText("");
button.setEnabled(true);
Toast.makeText(getApplicationContext(), "You have reset the values! Please enter new values before continuing!", Toast.LENGTH_LONG).show();
}
}
}
您可以查看是否保存了任何内容。
@Override
protected void onResume() {
super.onResume();
String isSaved = sharedPreferences.getString("Key", "not_saved");
if (isSaved.equals("not_saved"){
button.setEnabled(true);
}else{
button.setEnabled(false);
}
}
编辑您可以添加已保存的首选项以查看是否已保存
public class Settings extends Activity {
EditText editText, editText2, editText3;
RadioGroup radioSexGroup, radioTargetGroup;
Button button, resetbutton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
editText3 = (EditText) findViewById(R.id.editText3);
button = (Button) findViewById(R.id.button8);
button.setOnClickListener(new Button_Clicker());
resetbutton = (Button) findViewById(R.id.resetbutton);
resetbutton.setOnClickListener(new reset_clicker());
loadSavedPreferences();
}
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
String weight = sharedPreferences.getString("storedweight", "Your Weight");
editText.setText(weight);
String age = sharedPreferences.getString("storedage", "Your Age");
editText2.setText(age);
String height = sharedPreferences.getString("storedheight", "Your Height");
editText3.setText(height);
RadioButton male = (RadioButton)findViewById(R.id.radioMale);
RadioButton female = (RadioButton)findViewById(R.id.radioFemale);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
RadioButton strength = (RadioButton)findViewById(R.id.radioStrength);
RadioButton fitness = (RadioButton)findViewById(R.id.radioGeneralFitness);
if(sharedPreferences.getBoolean("is_strength", false))
strength.setChecked(true);
else
fitness.setChecked(true);
}
@Override
protected void onResume() {
super.onResume();
// Check to see it is was saved
loadSavedPreferences();
String isSaved = sharedPreferences.getString("isSaved", "notSaved");
if (isSaved.equals("saved"){
button.setEnabled(false);
}else{
button.setEnabled(true);
}
}
private void savePreferences(String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
private void saveGenderInPreference() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
int selectedId = radioSexGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioMale)
editor.putBoolean("is_male", true);
else
editor.putBoolean("is_male", false);
editor.commit();
}
private void saveTargetinPreference(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioTargetGroup = (RadioGroup) findViewById(R.id.radioTarget);
int selectedId = radioTargetGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioStrength)
editor.putBoolean("is_strength", true);
else
editor.putBoolean("is_strength", false);
editor.commit();
}
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
if
(//("\d+(?:\.\d+)?"))
//(editText.getText().toString().matches("[a-zA-Z]+") || editText2.getText().toString().matches("[a-zA-Z]+") && editText3.getText().toString().matches("[a-zA-Z]+"))
(editText.getText().toString().trim().length() == 0 || editText2.getText().toString().trim().length() == 0 || editText3.getText().toString().trim().length() == 0)
) {
Toast.makeText(getApplicationContext(), "Please enter values in all the fields!", Toast.LENGTH_LONG).show();
return;
}
int age = Integer.parseInt(editText2.getText().toString());
if (age < 18){
Toast.makeText(getApplicationContext(), "Please enter a valid age!", Toast.LENGTH_LONG).show();
return;
}
savePreferences("storedweight", editText.getText().toString());
savePreferences("storedage", editText2.getText().toString());
savePreferences("storedheight", editText3.getText().toString());
// Save a string to saved and check it within onResume.
savePreferences("isSaved", "saved");
saveGenderInPreference();
saveTargetinPreference();
finish();
}}
class reset_clicker implements Button.OnClickListener {
public void onClick(View v) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // here you get your prefrences by either of two methods
Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
editText.setText("");
editText2.setText("");
editText3.setText("");
button.setEnabled(true);
Toast.makeText(getApplicationContext(), "You have reset the values! Please enter new values before continuing!", Toast.LENGTH_LONG).show();
}
}
}
这样做:
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
if
(//("\d+(?:\.\d+)?"))
//(editText.getText().toString().matches("[a-zA-Z]+") || editText2.getText().toString().matches("[a-zA-Z]+") && editText3.getText().toString().matches("[a-zA-Z]+"))
(editText.getText().toString().trim().length() == 0 || editText2.getText().toString().trim().length() == 0 || editText3.getText().toString().trim().length() == 0)
) {
Toast.makeText(getApplicationContext(), "Please enter values in all the fields!", Toast.LENGTH_LONG).show();
return;
}
int age = Integer.parseInt(editText2.getText().toString());
if (age < 18){
Toast.makeText(getApplicationContext(), "Please enter a valid age!", Toast.LENGTH_LONG).show();
return;
}
savePreferences("storedweight", editText.getText().toString());
savePreferences("storedage", editText2.getText().toString());
savePreferences("storedheight", editText3.getText().toString());
saveGenderInPreference();
saveTargetinPreference();
savePreferences("alreadyStored","true");
finish();
}}
然后:
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
if (sharedPreferences.getString("alreadyStored",null) != null)
button.setEnabled(false);
else
button.setEnabled(true);
String weight = sharedPreferences.getString("storedweight", "Your Weight");
editText.setText(weight);
String age = sharedPreferences.getString("storedage", "Your Age");
editText2.setText(age);
String height = sharedPreferences.getString("storedheight", "Your Height");
editText3.setText(height);
RadioButton male = (RadioButton)findViewById(R.id.radioMale);
RadioButton female = (RadioButton)findViewById(R.id.radioFemale);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
RadioButton strength = (RadioButton)findViewById(R.id.radioStrength);
RadioButton fitness = (RadioButton)findViewById(R.id.radioGeneralFitness);
if(sharedPreferences.getBoolean("is_strength", false))
strength.setChecked(true);
else
fitness.setChecked(true);
}
这会检查您是否已保存数据并根据此设置启用或不启用按钮
我基本上有一个按钮可以将数据保存到共享首选项中。
我想做的是禁用该按钮,直到按下重置按钮,清除共享首选项中的数据,然后重新启用保存按钮。
我一直在尝试使用,但是当我保存后回到屏幕时,它又被启用了:
button.setEnabled(true);
有什么想法吗?
我的代码:
public class Settings extends Activity {
EditText editText, editText2, editText3;
RadioGroup radioSexGroup, radioTargetGroup;
Button button, resetbutton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
editText3 = (EditText) findViewById(R.id.editText3);
button = (Button) findViewById(R.id.button8);
button.setOnClickListener(new Button_Clicker());
resetbutton = (Button) findViewById(R.id.resetbutton);
resetbutton.setOnClickListener(new reset_clicker());
loadSavedPreferences();
}
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
String weight = sharedPreferences.getString("storedweight", "Your Weight");
editText.setText(weight);
String age = sharedPreferences.getString("storedage", "Your Age");
editText2.setText(age);
String height = sharedPreferences.getString("storedheight", "Your Height");
editText3.setText(height);
RadioButton male = (RadioButton)findViewById(R.id.radioMale);
RadioButton female = (RadioButton)findViewById(R.id.radioFemale);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
RadioButton strength = (RadioButton)findViewById(R.id.radioStrength);
RadioButton fitness = (RadioButton)findViewById(R.id.radioGeneralFitness);
if(sharedPreferences.getBoolean("is_strength", false))
strength.setChecked(true);
else
fitness.setChecked(true);
}
private void savePreferences(String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
private void saveGenderInPreference() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
int selectedId = radioSexGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioMale)
editor.putBoolean("is_male", true);
else
editor.putBoolean("is_male", false);
editor.commit();
}
private void saveTargetinPreference(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioTargetGroup = (RadioGroup) findViewById(R.id.radioTarget);
int selectedId = radioTargetGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioStrength)
editor.putBoolean("is_strength", true);
else
editor.putBoolean("is_strength", false);
editor.commit();
}
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
if
(//("\d+(?:\.\d+)?"))
//(editText.getText().toString().matches("[a-zA-Z]+") || editText2.getText().toString().matches("[a-zA-Z]+") && editText3.getText().toString().matches("[a-zA-Z]+"))
(editText.getText().toString().trim().length() == 0 || editText2.getText().toString().trim().length() == 0 || editText3.getText().toString().trim().length() == 0)
) {
Toast.makeText(getApplicationContext(), "Please enter values in all the fields!", Toast.LENGTH_LONG).show();
return;
}
int age = Integer.parseInt(editText2.getText().toString());
if (age < 18){
Toast.makeText(getApplicationContext(), "Please enter a valid age!", Toast.LENGTH_LONG).show();
return;
}
savePreferences("storedweight", editText.getText().toString());
savePreferences("storedage", editText2.getText().toString());
savePreferences("storedheight", editText3.getText().toString());
saveGenderInPreference();
saveTargetinPreference();
finish();
}}
class reset_clicker implements Button.OnClickListener {
public void onClick(View v) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // here you get your prefrences by either of two methods
Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
editText.setText("");
editText2.setText("");
editText3.setText("");
button.setEnabled(true);
Toast.makeText(getApplicationContext(), "You have reset the values! Please enter new values before continuing!", Toast.LENGTH_LONG).show();
}
}
}
您可以查看是否保存了任何内容。
@Override
protected void onResume() {
super.onResume();
String isSaved = sharedPreferences.getString("Key", "not_saved");
if (isSaved.equals("not_saved"){
button.setEnabled(true);
}else{
button.setEnabled(false);
}
}
编辑您可以添加已保存的首选项以查看是否已保存
public class Settings extends Activity {
EditText editText, editText2, editText3;
RadioGroup radioSexGroup, radioTargetGroup;
Button button, resetbutton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
editText3 = (EditText) findViewById(R.id.editText3);
button = (Button) findViewById(R.id.button8);
button.setOnClickListener(new Button_Clicker());
resetbutton = (Button) findViewById(R.id.resetbutton);
resetbutton.setOnClickListener(new reset_clicker());
loadSavedPreferences();
}
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
String weight = sharedPreferences.getString("storedweight", "Your Weight");
editText.setText(weight);
String age = sharedPreferences.getString("storedage", "Your Age");
editText2.setText(age);
String height = sharedPreferences.getString("storedheight", "Your Height");
editText3.setText(height);
RadioButton male = (RadioButton)findViewById(R.id.radioMale);
RadioButton female = (RadioButton)findViewById(R.id.radioFemale);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
RadioButton strength = (RadioButton)findViewById(R.id.radioStrength);
RadioButton fitness = (RadioButton)findViewById(R.id.radioGeneralFitness);
if(sharedPreferences.getBoolean("is_strength", false))
strength.setChecked(true);
else
fitness.setChecked(true);
}
@Override
protected void onResume() {
super.onResume();
// Check to see it is was saved
loadSavedPreferences();
String isSaved = sharedPreferences.getString("isSaved", "notSaved");
if (isSaved.equals("saved"){
button.setEnabled(false);
}else{
button.setEnabled(true);
}
}
private void savePreferences(String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
private void saveGenderInPreference() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
int selectedId = radioSexGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioMale)
editor.putBoolean("is_male", true);
else
editor.putBoolean("is_male", false);
editor.commit();
}
private void saveTargetinPreference(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioTargetGroup = (RadioGroup) findViewById(R.id.radioTarget);
int selectedId = radioTargetGroup.getCheckedRadioButtonId();
if(selectedId == R.id.radioStrength)
editor.putBoolean("is_strength", true);
else
editor.putBoolean("is_strength", false);
editor.commit();
}
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
if
(//("\d+(?:\.\d+)?"))
//(editText.getText().toString().matches("[a-zA-Z]+") || editText2.getText().toString().matches("[a-zA-Z]+") && editText3.getText().toString().matches("[a-zA-Z]+"))
(editText.getText().toString().trim().length() == 0 || editText2.getText().toString().trim().length() == 0 || editText3.getText().toString().trim().length() == 0)
) {
Toast.makeText(getApplicationContext(), "Please enter values in all the fields!", Toast.LENGTH_LONG).show();
return;
}
int age = Integer.parseInt(editText2.getText().toString());
if (age < 18){
Toast.makeText(getApplicationContext(), "Please enter a valid age!", Toast.LENGTH_LONG).show();
return;
}
savePreferences("storedweight", editText.getText().toString());
savePreferences("storedage", editText2.getText().toString());
savePreferences("storedheight", editText3.getText().toString());
// Save a string to saved and check it within onResume.
savePreferences("isSaved", "saved");
saveGenderInPreference();
saveTargetinPreference();
finish();
}}
class reset_clicker implements Button.OnClickListener {
public void onClick(View v) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // here you get your prefrences by either of two methods
Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
editText.setText("");
editText2.setText("");
editText3.setText("");
button.setEnabled(true);
Toast.makeText(getApplicationContext(), "You have reset the values! Please enter new values before continuing!", Toast.LENGTH_LONG).show();
}
}
}
这样做:
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
if
(//("\d+(?:\.\d+)?"))
//(editText.getText().toString().matches("[a-zA-Z]+") || editText2.getText().toString().matches("[a-zA-Z]+") && editText3.getText().toString().matches("[a-zA-Z]+"))
(editText.getText().toString().trim().length() == 0 || editText2.getText().toString().trim().length() == 0 || editText3.getText().toString().trim().length() == 0)
) {
Toast.makeText(getApplicationContext(), "Please enter values in all the fields!", Toast.LENGTH_LONG).show();
return;
}
int age = Integer.parseInt(editText2.getText().toString());
if (age < 18){
Toast.makeText(getApplicationContext(), "Please enter a valid age!", Toast.LENGTH_LONG).show();
return;
}
savePreferences("storedweight", editText.getText().toString());
savePreferences("storedage", editText2.getText().toString());
savePreferences("storedheight", editText3.getText().toString());
saveGenderInPreference();
saveTargetinPreference();
savePreferences("alreadyStored","true");
finish();
}}
然后:
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
if (sharedPreferences.getString("alreadyStored",null) != null)
button.setEnabled(false);
else
button.setEnabled(true);
String weight = sharedPreferences.getString("storedweight", "Your Weight");
editText.setText(weight);
String age = sharedPreferences.getString("storedage", "Your Age");
editText2.setText(age);
String height = sharedPreferences.getString("storedheight", "Your Height");
editText3.setText(height);
RadioButton male = (RadioButton)findViewById(R.id.radioMale);
RadioButton female = (RadioButton)findViewById(R.id.radioFemale);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
RadioButton strength = (RadioButton)findViewById(R.id.radioStrength);
RadioButton fitness = (RadioButton)findViewById(R.id.radioGeneralFitness);
if(sharedPreferences.getBoolean("is_strength", false))
strength.setChecked(true);
else
fitness.setChecked(true);
}
这会检查您是否已保存数据并根据此设置启用或不启用按钮