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>

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>

modifica:. Ha aggiunto un logcat che un pò sembrava possibilmente correlata

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> Esplora file> Dati> Dati> packageName> SharedPreferences Questo è ciò che era 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>

Tutto questo mi ha veramente confonde più perché ... Sembra greedsound fa infatti = gsone così .... non capisco che cosa è sbagliato non è nemmeno la riproduzione del suono di default. e sì che ho provato

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

il tutto senza l'altro codice e funzionano grande. Non sono sicuro di ciò che è lavoro

È stato utile?

Soluzione

greensound.equals ( "gsone")

Altri suggerimenti

Ho avuto un problema simile. Ho cambiato i miei confronti '==' a string.contentsEquals () e le cose iniziato a lavorare. Alla fine ho finito per mettere le chiavi ei valori in HashMaps.

L'unico problema che mi viene in mente è che le preferenze non sono sempre insieme, prima si esegue il codice PlaySound. Per garantire le impostazioni vengono caricate includono il seguente codice nel tuo onCreate ():

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

Inoltre, attraverso il controllo DDMS> Esplora file> Dati> Dati> packageName > SharedPreferences che le preferenze stanno ottenendo insieme.

Quando si utilizza Preferenze di attività e la creazione da risorsa xml. Si crea automaticamente un file SharedPreference: packageName_preferences (es. Com.my_company.my_app_preferences). Così per accedere a questo è necessario utilizzare il seguente codice:

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

E infine rimuovere la seguente riga nel file XML:

android:defaultValue="gsone"

Spero che questo aiuti.

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