2010-08-02 9 views
7

que necesitan ayuda para que consigue resultados de vuelta de la intención lanzado desde la pantalla preferencia[Android] ¿Cómo obtener resultados del intento iniciado desde la pantalla de preferencias?

// Intent preference 
    DevicePref = 
    getPreferenceManager().createPreferenceScreen(this); 

    // Show a Screen with list of Devices Discovered 
    Intent i = new Intent(this,getDevice.class); 
    DevicePref.setIntent(i); 
    DevicePref.setTitle("Select Device"); 
    DevicePref.setSummary(mSelectedDevice); 
    deviceOptionsCat.addPreference(DevicePref); 

Quiero usuario seleccionar el dispositivo ... En screeen preferencia muestro "Seleccione dispositivo" .. cuando el usuario hace clic de eso, otro la pantalla se inicia con la intención donde se enumeran todos los dispositivos. El usuario selecciona el dispositivo.

¿Cómo sé que el usuario ha seleccionado qué dispositivo? Y quiero actualizar que en el resumen.

Pls. hágamelo saber Gracias

Respuesta

9

Tengo la respuesta, esperan que ayude a alguien como yo ...

No mencione la intención al crear la preferencia como lo hice en el código de .. Mención intención de OnPreferenceClickListener y luego hacer startActivityForResult()

// Intent preference 
    DevicePref = getPreferenceManager().createPreferenceScreen(this); 
    // Show a Screen with list of Devices Discovered 

    DevicePref.setOnPreferenceClickListener(onPreferenceClick); 

    DevicePref.setTitle("Select Device"); 
    DevicePref.setSummary(mSelectedDevice); 
    deviceOptionsCat.addPreference(DevicePref); 

A continuación, cree OnPreferenceClickListner y aquí no StartActivityFromResult()

OnPreferenceClickListener onPreferenceClick = new Preference.OnPreferenceClickListener() { 
     public boolean onPreferenceClick(Preference preference) { 

      if (preference ==DevicePref) 
      { 
       Intent i = new Intent(DevuiceOptions.this,getDevice.class); 
       DevicePref.setIntent(i); 
       startActivityForResult(i,CHOOSE_DEVICE); 

      } 
      return true; 
     } 
    }; 

Finalmente, para obtener el control del resultado en el campo Resumen de la actividad y actualizar el resumen.

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 

     switch (requestCode) { 

      case Constants.CHOOSE_DEVICE: 
      { 
       if (data!=null) 
       { 
        Bundle b = data.getExtras(); 
        mSelectedDevice = (String) b.get("Name"); 
        UpdatePreferences(); 
       } 

      } 
    } 
} 

Gracias

+1

Esto funcionó para mí .. Gracias! Inicialmente, onActivityResult se llamaba solo la segunda vez. Eso fue porque onPreferenceClick estaba devolviendo un falso. – diptia

Cuestiones relacionadas