我要活动,MainActivity和settingsActivity。因此,我在settingsActivity中使用了onPause
和onResume
方法。因此,我在settingsActivity中完成的操作在切换到MainActivity后再次保存。
settingsActivity:
在这里,我有一个TextView
(称为“settings2”)作为一种变量,我的三个RadioButtons
(radio0
,radio1
和radio2
)它们位于RadioGroup
内。
切换到MainActivity后,如果上次检查radio0
,我的程序会在文件中保存“0”(保存在SD卡上)。但是如果最后一次检查radio1
,它会在该文件中放置1。如果上次检查radio2
,则会在该文件中放置2。
我在方法onPause
中使用了这个。
然后在方法onResume
中,我阅读了该文件的文本并将其放入TextView
“settings2”。
在此代码之后(仍在onResume
中)我想检查/取消选中我的RadioButtons
。因此,如果TextView
“settings2”的文本为“0”,则应检查RadioButton
"radio0"
,而不检查其他TextView
RadioButton
。如果此"radio1"
的文字为“1”,则应检查TextView
RadioButton
,而不检查其他"radio2"
if (settings2.getText().equals("0")) {
radio0.setChecked(true);
radio1.setChecked(false);
radio2.setChecked(false);
} else if (settings2.getText().equals("1")) {
radio0.setChecked(false);
radio1.setChecked(true);
radio2.setChecked(false);
} else if (settings2.getText().equals("2")) {
radio0.setChecked(false);
radio1.setChecked(false);
radio2.setChecked(true);
}
。如果此if (settings2.getText().equals("0")) {
radioGroup1.check(R.id.radio0);
} else if (settings2.getText().equals("1")) {
radioGroup1.check(R.id.radio1);
} else if (settings2.getText().equals("2")) {
radioGroup1.check(R.id.radio2);
}
的文字为“2”,则应检查{{1}} {{1}},而不检查其他{{1}} {{1}}。
为此,我使用了以下两个代码,但不幸的是它们没有用。
第一个代码:
{{1}}
第二段代码:
{{1}}
有人可以帮助解决这个小问题吗?我期待着你的帮助!
提前致谢!
答案 0 :(得分:4)
这是问题所在。
EditText et = ....
et.getText() // Does not return a string, it returns an Editable.
尝试:
String str = et.getText().toString;
然后使用str进行比较。
编辑:请参阅下面的源代码,了解为什么必须使用字符串进行比较。默认值是通过引用进行比较,但字符串具有覆盖等于基于字符串值进行比较。如果您不使用String,则不会获得匹配。
public boolean More ...equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
答案 1 :(得分:3)
您确定TextView文本是0,1还是2?对于这样的设置,你应该看看SharedPreferences
!它更容易使用,也更快。
你应该做的第二件事是取代你应该做的settings2.getText().toString ()
int input = Integer.parseInt (settings2.getText().toString()
然后使用
switch(input) {
case 0:
// code when text equals 0
break;
case 1:
// code when text equals 1
break;
case 2:
// code when text equals 2
break;
}
调查一下。 。我现在在移动电话上
编辑:格式化文本以获得更好的视图。
编辑2:SharedPreferences示例
//get your app's Preference Manager
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); // If you are coding this in your Activity class, you have to use getDefaultSharedPreferences(this) instead!
public int getPrefs(String key) {
//get an Integer from the preferences
return prefs.getInt(key, defaultValue);
//defaultValue is in case a value for the given key is not found, for example, the user runs the app for the 1st time.
}
public void setPrefs() {
//You need a SharedPreference editor
SharedPreferences.Editor prefsEditor = prefs.edit();
//SharedPreference work with a key and its value
prefsEditor.putInt(key, value);
//You have to commit the preferences, or they don't get saved!
//If you want to use a save button, you can make the Editor variable into a Global var (class variable) and in your save button's onClick, just commit!
prefsEditor.commit();
}