Pregunta

Podría alguien puede que me diga lo que estoy haciendo mal? Estoy apostando im falta una cosa pequeña. He mirado en el sitio de desarrolladores y he leído algunos tutoriales y yo no estoy viendo lo que hice mal.

Estoy intentando utilizar un ListPreference decidir qué sonido para reproducir en un clic de botón.

Tengo esto en la parte superior:

public String greensound;

Aquí está mi código 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;

Aquí está mi 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>

aquí está mi 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);


    }


}

y aquí está mi arsenal es si eso ayuda en absoluto:

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

editar:. Logcat añade un poco que parecía posiblemente relacionado

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> Explorador de archivos> Datos> Datos> packageName> SharedPreferences Esto es lo que estaba allí:

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>

Todo esto realmente me confunde más porque ... Parece que de hecho lo hace greedsound = gsone así que .... No entiendo por qué es malo ni es la reproducción del sonido por defecto. y sí que he probado

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

todo sin el otro código y funcionan muy bien. No estoy seguro de lo que es el trabajo

¿Fue útil?

Solución

greensound.equals ( "gsone")

Otros consejos

He tenido un problema similar. He cambiado mis comparaciones '==' a string.contentsEquals () y cosas de empezar a trabajar. Finalmente me acabó poniendo las claves y valores en HashMaps.

El único problema que ocurre es que sus preferencias no se establecen antes de que se está ejecutando su código reproducirSonido. Para asegurar que los ajustes se cargan incluyen el siguiente código en su onCreate ():

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

Además, cheque a través de las DDM> Explorador de archivos> Datos> Datos> packageName > SharedPreferences que sus preferencias están recibiendo conjunto.

Cuando se utiliza de preferencia de actividad y creándolo de recursos XML. Se crea automáticamente un archivo SharedPreference: packageName_preferences (. Ej com.my_company.my_app_preferences). De este modo el acceso a ello, tiene que utilizar el siguiente código:

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

Y finalmente eliminar la siguiente línea en el xml:

android:defaultValue="gsone"

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top