Frage

Könnte jemand mir vielleicht sagen, was ich falsch mache? Ich wette, im eine Kleinigkeit fehlt. Ich habe auf der Entwickler-Website geschaut und ich habe einige Tutorials gelesen und ich bin einfach nicht sehen, was ich falsch gemacht habe.

Ich versuche, eine ListPreference zu verwenden, um zu entscheiden, welcher Sound auf einer Schaltfläche klicken, um zu spielen.

Ich habe dies an der Spitze:

public String greensound;

Hier ist mein OnClick Code:

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;

Hier ist mein 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>

hier ist mein 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);


    }


}

und hier ist mein Array ist, wenn das hilft überhaupt:

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

bearbeiten. Hinzugefügt, um eine logcat, die irgendwie möglicherweise sahen im Zusammenhang

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> Datei-Explorer> Daten> Daten> Paketname> SharedPreferences Dies ist, was war da drin:

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>

Das alles wirklich verwirrt mich mehr, weil ... Es ist wie greedsound sieht tut infact = gsone so .... Ich verstehe nicht, was falsch ist es nicht einmal den Standard-Sound zu spielen. und ja, ich habe getestet

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

alle ohne den anderen Code und sie arbeiten groß. Ich bin nicht sicher, was Arbeit

War es hilfreich?

Lösung

greensound.equals ( "gsone")

Andere Tipps

Ich hatte ein ähnliches Problem. Ich änderte meine ‚==‘ Vergleiche zu string.contentsEquals () und Dinge zu arbeiten begann. Ich schließlich endete die Schlüssel und Werte in HashMaps setzen.

Das einzige Problem, das ich denken kann, ist, dass Ihre Einstellungen nicht Set bekommen, bevor Sie Ihren Code playsound ausgeführt werden. Um sicherzustellen, dass die Einstellungen geladen werden den folgenden Code in Ihrer onCreate ():

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

Überprüfen Sie auch durch die DDMS> Datei-Explorer> Daten> Daten> package > SharedPreferences, dass Ihre Präferenzen werden immer gesetzt.

Wenn Sie Preference Aktivität verwenden und es aus XML-Ressource. Es erstellt automatisch eine SharedPreference Datei: packageName_preferences (. ZB com.my_company.my_app_preferences). So zum Zugriff auf diese müssen Sie den folgenden Code verwenden:

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

Und schließlich entfernen Sie die folgende Zeile in der xml:

android:defaultValue="gsone"

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top