几天前开始使用 Android,我有点菜鸟。 我得到了一个带有重量、宽度值的 MainActivity。这些值可以是英寸-磅或厘米-千克。
如何更改这些值?从设置中,我创建了一个带有 ListPreference 的简单菜单。 选择这两种措施中的一种时,我需要使用新值更新我的 MainActivity。为什么?我得到以下内容
TextView :文本编辑
重量(千克)
[__________]
宽度(厘米)
[__________]
我希望在设置菜单中选择后括号内的那些文本可以动态更改。
这是我的代码的一部分:
MainActivity getting the Preferences from prefs.xml
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initializeAttributes();
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(this);
String measures = getPrefs.getString("MEASURE_KEY", "Inches-Pounds");
String[] splitMeasure = measures.split("\\-");
measureWeight.setText(measureWeight.getText() + " ( " + splitMeasure[1] + " )");
measureHeight.setText(measureHeight.getText() + " ( " + splitMeasure[0] + " )");
This is the prefs.xml with the menu
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/cat_language">
<ListPreference
android:title="@string/title_language"
android:summary="@string/sum_language"
android:key="LANGUAGE_KEY"
android:entries="@array/languages"
android:entryValues="@array/languages"
android:defaultValue="English"/>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/cat_usage">
<ListPreference
android:title="@string/title_measure"
android:summary="@string/sum_measure"
android:key="MEASURE_KEY"
android:entries="@array/measures"
android:entryValues="@array/measures"
android:defaultValue="Inches-Pounds"/>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/cat_help">
<Preference
android:title="@string/title_howto"
android:summary="@string/sum_howto"
android:key="HOWTO_KEY" />
<Preference
android:title="@string/title_about"
android:summary="@string/sum_about"
android:key="ABOUT_KEY" />
</PreferenceCategory>
</PreferenceScreen>
我什至尝试使用 commit() 但也无法使其工作。
在尝试使用 onResume() 之后,我得到的结果是“很好”,除了每次我从设置中更改它时它都会给我添加一个(度量),例如:
重量(千克)(磅)(千克)(磅)等。
任何人都可以帮助我了解如何在这种情况下使用 onResume 方法吗?
提前致谢。
最佳答案
在 ListPreference 中将 android:entryValues 更改为 android:entryValues="@array/measuresValues"
你的条目数组应该看起来像这样
<string-array name="measures">
<item>Inches-Pounds</item>
<item>Cm-Kilograms</item>
</string-array>
和你的 entryValues 数组
<string-array name="measuresValues">
<item>"Inches-Pounds"</item>
<item>"Cm-Kilograms"</item>
</string-array>
然后把它放在 Activity onResume() 中
SharedPreferences mysettings = PreferenceManager.getDefaultSharedPreferences(this);
String st1 = mysettings.getString("MEASURE_KEY", "default Value here");
if(st1.equals("Inches-Pounds")){
//do some stuff here
//like textview.setText.....
}
if(st1.equals("Cm-Kilograms")){
//do some stuff here
}
关于java - 将 onResume/onStop 用于首选项(设置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446124/