Cómo tocar EditTextPrefences de otra actividad u otro hilo

Tengo una actividad de configuración que el nombre de la tienda, al cambiar el nombre que debe enviar primero a mi servidor y si su tienda en el servidor con éxito, entonces debería establecer en el resumen de mi EditTextPreference .

Todo funciona bien, pero al final no puedo tocar el EditTextPreference para establecer el nombre en él.

Este método está en el establecimiento de la actividad, pero se llama desde onPostExecute de la AsyncTask

  public void setNewSetting(Activity activity) { EditTextPreference editTextPreference = (EditTextPreference) UserSettingActivity.this.findPreference(activity.getString(R.string.pref_name_key)); name = sharedPreferences.getString(activity.getString(R.string.pref_name_key), ""); editTextPreference.setSummary(name); } 

La actividad es la actividad de configuración que pasé a AsyncTask y luego pasó al método.

Mi problema está aquí y me dan un nullPoiterException para EditTextPreferences

Perdón por mi mal ingles. Y gracias de antemano.

One Solution collect form web for “Cómo tocar EditTextPrefences de otra actividad u otro hilo”

Método 1:

Si la actividad sigue en segundo plano, pase su context a AsyncTask y cree una instancia de su Actividad de configuración.

 SettingsActivity settingsActivity = (SettingsActivity) context; 

Entonces, llame al método en onPostExecute()

 settingsActivity.setNewSetting(); 

Y, tenga su método setNewSetting() en su SettingsActivity. Debe ser público y poner algunas comprobaciones para los valores nulos.

Método 2:

Utilice un delegado de interfaz. Crear una interfaz:

  public interface TaskListener { void onComplete(); } 

Pase a AsyncTask cuando lo ejecute, algo así como:

 new MyAsyncTask(params, params, new TaskListener() { @Override public void onComplete () { // call setNewSetting from within SettingsActivity } }).execute(); 

Lo obtiene en su constructor AsyncTask:

 public MyAsyncTask (String params, String param2, TaskListener taskListenerDelegate) { this.taskListenerDelegate = taskListenerDelegate; } 

Llame a su onComplete() en onPostExecute() :

 taskListenerDelegate.onComplete(); 

Método 3

No se recomienda, pero puede intentar con startActivityForResult() también. Y, escuche en onActivityResult() para aplicar los cambios.

  • Cómo hacer que un cuadro de diálogo de PreferenciaActividad abra una ventana de diálogo para establecer una preferencia personalizada
  • Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
  • ¿Cómo puedo agregar por programación EditTextPreferences a mi PreferenceFragment?
  • La forma más segura de usar SharedPreferences
  • Disposición de la pantalla de preferencias de Android
  • Preferencias con ActionBar Sherlock
  • Utilizar una subclase personalizada de SharedPreferences con PreferenceActivity o PreferenceFragment
  • ¿Por qué Custom DialogPreference no se activa en onSharedPreferenceChanged?
  • Usar TimePicker o DatePicker en la pantalla Preferencias en Android
  • ¿Dónde debe llamar a PreferenceManager.setDefaultValues?
  • Android: No se ha encontrado actividad para manejar el error de intención? Cómo va a resolver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.