java - 将 onResume/onStop 用于首选项(设置)

标签 java android menu preferences

几天前开始使用 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/

相关文章:

java - 如何将文件从 Android 写入 PC 并返回?

java - 如何为 &lt;![CDATA[]]> 解析 XML

android - 如何避免新的应用内购买底部表单将整个应用推高

android - 可以使 setSystemUiVisibility() 影响整个系统,而不仅仅是您的应用程序吗?

java - 如何返回多个值

java - 如何在java中使用键盘使 Sprite 移动(libgdx)

android - 在操作栏中调整应用程序名称

css - 调整大小后响应式菜单无法点击链接

javascript - 动画菜单关闭/打开行为

android - 处理 fragment 菜单选项