Question

Quelqu'un pourrait-il me dire peut-être ce que je fais mal? Je parie im manque une petite chose. Je l'ai regardé sur le site développeur et j'ai lu quelques tutoriels et je suis tout simplement pas voir ce que je fait de mal.

Je suis en train d'utiliser un ListPreference pour décider quel son à jouer sur un bouton clic.

J'ai ce en haut:

public String greensound;

Voici mon code 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;

Voici mon 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>

voici mon 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);


    }


}

et voici mon tableau est si cela aide à tous:

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

modifier. Ajouté un logcat que peu avaient l'air peut-être lié

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> Explorateur de fichiers> Données>> packageName> SharedPreferences C'est ce qui était là-bas:

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>

Tout cela me confond vraiment plus parce que ... Il ressemble à greedsound ne enfait = gsone alors .... Je ne comprends pas ce qui est erroné son même pas jouer le son par défaut. et oui je l'ai testé

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

tous sans l'autre code et ils travaillent beaucoup. Je ne sais pas ce qui est du travail

Était-ce utile?

La solution

greensound.equals ( "gsone")

Autres conseils

J'ai eu un problème similaire. J'ai changé mes « == » comparaisons string.contentsEquals () et les choses ont commencé à travailler. J'ai finalement fini par mettre les clés et valeurs dans HashMaps.

Le seul problème que je peux penser est que vos préférences ne reçoivent pas définie avant que vous exécutez votre code playSound. Pour assurer que les paramètres sont chargés comprennent le code suivant dans votre onCreate ():

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

En outre, le contrôle par DDMS> Explorateur de fichiers> Données>> packageName > SharedPreferences que vos préférences obtiennent ensemble.

Lorsque vous utilisez l'activité des préférences et la créer à partir des ressources xml. Il crée automatiquement un fichier SharedPreference: packageName_preferences (. Par exemple com.my_company.my_app_preferences). Ainsi, pour accéder à ce que vous devez utiliser le code suivant:

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

Et enfin supprimer la ligne suivante dans le fichier XML:

android:defaultValue="gsone"

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top