有人可以告诉我我在做什么错吗?我敢打赌我错过了一件小东西。我已经查看了开发人员网站,并且阅读了一些教程,但我只是看不到我做错了什么。

我正在尝试使用listPreference来决定在按钮点击时播放的声音。

我的顶部有:

public String greensound;

这是我的单击代码:

case R.id.green:
     SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this);
     greensound  = prefs.getString("greensound", "gsone");
       if (greensound == "gsone") {
        mSoundManager.playSound(1); 
       } else if (greensound == "gstwo") {
        mSoundManager.playSound(2); 
       } else if (greensound == "gsthree") {
        mSoundManager.playSound(3);
       }
 break;

这是我的XML:

<ListPreference 
android:title="Geen Button" 
android:key="greensound"
android:summary="Select sound for the Green Button" 
android:entries="@array/green_list" 
android:entryValues="@array/green_list_values"
android:defaultValue="gsone">
</ListPreference>

这是我的设置.java:

package com.my.app;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Settings extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);


    }


}

这是我的阵列,如果这会有所帮助:

//This is the one I want to display to the user
    <string-array name="green_list"> 
      <item>Sound One</item>
      <item>Sound Two</item>
      <item>Sound Three</item>
      <item>Sound Four</item>
      <item>Sound Five</item>
    </string-array>


    <string-array name="green_list_values"> 
      <item>gsone</item>
      <item>gstwo</item>
      <item>gsthree</item>
      <item>gsfour</item>
      <item>gsfive</item>
    </string-array>

编辑:添加了一个看起来可能相关的记录猫。

08-27 01:52:07.738: WARN/Resources(6846): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f090000}
08-27 01:52:07.748: WARN/Resources(6846): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f090000}
08-27 01:52:07.758: WARN/Resources(6846): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f090000}

ddms>文件资源管理器>数据>数据> packagename> sharedPreferences这就是其中的内容:

com.my.app_preferences.xml:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="redsound">rsone</string>
<string name="greensound">gsone</string>
</map>

_has_set_default_values.xml:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="_has_set_default_values" value="true" />
</map>

这一切确实使我更加困惑,因为...看起来贪婪确实iffact = Gsone,所以....我不明白这是什么错,甚至没有播放默认的声音。是的,我已经测试过

mSoundManager.playSound(1); 
mSoundManager.playSound(2); 
mSoundManager.playSound(3);

所有这些都没有其他代码,它们效果很好。我不确定有什么工作

有帮助吗?

解决方案

greensound.Equals(“ Gsone”)

其他提示

我也有类似的问题。我将“ ==”比较更改为string.contentsequals(),事情开始工作。最终,我最终将钥匙和值放入哈希图中。

我唯一能想到的问题是,在运行弹奏代码之前,您的偏好没有设置。为了确保已加载设置,包括您的OnCreate()中的以下代码:

/* Loading default preferences the first time application is run */
        PreferenceManager.setDefaultValues(getApplicationContext(),
                R.xml.filename, false);

另外,请检查DDMS>“文件资源管理器”>数据>数据> 包裹名字 >您的偏好设置的共享流程。

当您使用首选项活动并从XML资源创建它时。它会自动创建一个共享preference文件:packagename_preferences(例如com.my_company.my_app_preferences)。因此,要访问它,您需要使用以下代码:

SharedPreferences prefs = getSharedPreferences("com.my.app_preferences", MODE_PRIVATE);

最后删除XML中的以下行:

android:defaultValue="gsone"

希望这可以帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top