【问题标题】:Using onResume/onStop for Preferences (Settings)使用 onResume/onStop 作为首选项(设置)
【发布时间】:2013-03-16 06:00:16
【问题描述】:

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

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

TextView : 文本编辑

重量(公斤)

[__________]

宽度(厘米)

[__________]

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

这是我的代码的一部分:

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

提前致谢。

【问题讨论】:

    标签: java android menu preferences


    【解决方案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>  
    

    然后把这个放到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
    }
    

    【讨论】:

    • 是的,但是,如何更新值?我试着做code if("Inches-Pounds".equals(measures)) { measureWeight.setText(measureWeight.getText() + " ( Pounds )"); measureHeight.setText(measureHeight.getText() + " ( 英寸 )"); }else{ measureWeight.setText(measureWeight.getText() + " ( 公斤 )"); measureHeight.setText(measureHeight.getText() + " ( Cm )"); } code 但值不会更新:(
    • 是的,你是对的!谢谢队友...我需要使“动态”变量独立,寿。将它们与重量和高度文本分开。顺便说一句,您知道动态更改语言的好教程吗?感谢您的帮助队友:D 现在要睡觉了,凌晨 3:25 在这里哈哈哈哈哈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2016-10-30
    • 2014-10-10
    相关资源
    最近更新 更多