Domanda

Qualcuno potrebbe forse dirmi che cosa sto facendo male? Sto scommettendo im manca una piccola cosa. Ho guardato sul sito degli sviluppatori e ho letto alcuni tutorial e non sto solo vedere che cosa ho fatto di sbagliato.

Sto cercando di utilizzare un ListPreference per decidere quale suono da riprodurre su un pulsante di scatto.

ho questo in cima:

public String greensound;

Ecco il mio codice 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;

Ecco il mio 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?

ecco la mia 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);


    }


}

ed ecco la mia matrice è se questo vi aiuterà a tutti:

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

Ecco un logcat che genere di sguardo possibilmente correlato:

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}

Per coloro che potrebbero chiedere ecco la mia DDMS> Esplora file> Dati> Dati>> packageName SharedPreferences Questo è quello che era in là:

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>

Questo mi confonde tutti davvero più perché ... Sembra Greensound fa == gsone così .... non capisco che cosa è sbagliato non è nemmeno la riproduzione del suono di default. e sì che ho provato tutto questo codice senza il codice listpreference e funzionano grande. Non sono sicuro di ciò che è sbagliato

mSoundManager.playSound(1); 
mSoundManager.playSound(2); 
mSoundManager.playSound(3);
È stato utile?

Soluzione

Cambia greensound == "gsone" a greensound.equals(gsone)

Questo è un errore molto comune per i nuovi programmatori Java e le persone che non hanno una buona conoscenza su concetti object oriented. Ecco un buon riferimento di confronto di oggetti e valori in java

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


Inoltre, perché tutti insistono sulla realizzazione onClickListener nell'attività principale? C'è qualche nuovo tutorial che suggerisce che questo o qualcosa del genere?

invece che fare una classe interna anonima (a meno che non hai un sacco di pulsanti e si desidera impostare i loro ascoltatori click programmaticamente.



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");
}
});


Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top