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>

//I also tried removing the default value here it didnt seem to change anything but, should it be removed?

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>

Voici une logcat qui avait l'air un peu 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}

Pour ceux qui pourraient poser ici est mon 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 ... On dirait que Greensound ne == gsone donc .... Je ne comprends pas ce qui est erroné son même pas jouer le son par défaut. et oui je l'ai testé tout ce code sans le code listpreference et ils fonctionnent très bien. Je ne sais pas ce qui ne va pas

mSoundManager.playSound(1); 
mSoundManager.playSound(2); 
mSoundManager.playSound(3);
Était-ce utile?

La solution

Changement greensound == "gsone" à greensound.equals(gsone)

Ceci est une erreur très courante pour les nouveaux programmeurs Java et les personnes qui ne sont pas une bonne compréhension des concepts orientés objet. Voici une bonne référence pour comparer les objets et valeurs java

http://leepoint.net/notes-java/data/expressions /22compareobjects.html


En outre, pourquoi tout le monde insiste sur la mise en œuvre onClickListener dans l'activité principale? Y at-il un nouveau tutoriel qui suggère ceci ou quelque chose?

au lieu faire une classe interne anonyme (sauf si vous avez un tas de boutons et que vous souhaitez définir leurs auditeurs cliquez programatically.



Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new onClickListener(){

    @Override
    public void onClick(){
        Preferences pref = MyActivity.this.getSharedPreferences()
        String s = pref.getString("sound","gsone");
}
});


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