1

几天前开始使用Android,我有点菜鸟。我得到了一个带有重量、宽度值的 MainActivity。这些值可以是英寸-磅或厘米-千克。

我如何更改这些值?从设置中,我创建了一个带有 ListPreference 的简单菜单。在选择这两种措施中的一个时,我需要使用新值更新我的主动。为什么?我得到了以下

文本视图:文本编辑

重量(公斤)

[ _ __ _ __ _ ___ ]

宽度(厘米)

[ _ __ _ __ _ ___ ]

括号之间的那些文本我希望在设置菜单中选择后对它们进行动态更改。

这是我的代码的一部分:

MainActivity 从 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] + " )");

这是带有菜单的 prefs.xml

<?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 方法?

提前致谢。

4

1 回答 1

1

在 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>  

然后把这个放在活动 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
}
于 2013-03-16T06:11:47.870 回答