2

誰かが私が間違っていることを教えてもらえますか?私は私が1つの小さなことを逃していることに賭けています。私は開発者サイトを見て、いくつかのチュートリアルを読みましたが、何が間違っていたのかわかりません。

ListPreferenceを使用して、ボタンクリックで再生するサウンドを決定しようとしています。

私はこれを一番上に持っています:

public String greensound;

これが私のOnClickコードです:

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>

これが私のSettings.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>

編集:ちょっと関連しているように見えるlogcatを追加しました。

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>

これは本当に私をもっと混乱させます。なぜなら...greedsoundはinfact=gsoneのように見えるので....デフォルトのサウンドを再生しなくても、何が悪いのかわかりません。はい、私はテストしました

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

すべて他のコードなしで、それらはうまく機能します。何がうまくいくのかわかりません

4

3 に答える 3

1

greensound.equals( "gsone")

于 2010-08-28T04:07:34.797 に答える
1

私も同様の問題を抱えていました。'=='の比較をstring.contentsEquals()に変更すると、動作が開始されました。最終的に、キーと値をHashMapsに配置することになりました。

于 2010-09-05T03:42:05.263 に答える
0

私が考えることができる唯一の問題は、playSoundコードを実行する前に設定が設定されていないことです。設定が確実に読み込まれるようにするには、onCreate()に次のコードを含めます。

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

また、DDMS>ファイルエクスプローラー>データ>データ> packageName > SharedPreferencesで、設定が設定されていることを確認してください。

Preference Activityを使用していて、xmlリソースから作成している場合。SharedPreferenceファイル:packageName_preferences(com.my_company.my_app_preferencesなど)が自動的に作成されます。したがって、これにアクセスするには、次のコードを使用する必要があります。

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

そして最後に、xmlの次の行を削除します。

android:defaultValue="gsone"

お役に立てれば。

于 2010-08-27T04:11:24.827 に答える