Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


RunOnUiThread en el fragmento

Estoy tratando de convertir una actividad en fragmento. La marca de error en runOnUiThread . en el pasado:

GoogleActivityV2 se extiende desde Actividad. RunOnUiThread en la clase ExecuteTask. Class ExecuteTask anidado en la actividad.

(Ejecutar ok) ahora:

GoogleActivityV2 se extiende desde Fragmento. RunOnUiThread en la clase ExecuteTask. Class ExecuteTask anidado en la actividad. (Error en runOnUiThread)

Aquí está mi código

 public class GoogleActivityV2 extends SherlockMapFragment implements OnMapClickListener , OnMapLongClickListener , OnCameraChangeListener , TextWatcher { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View rootView = inflater.inflate(R.layout.activity_googlev2, container, false); Init(); adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_dropdown_item_1line); textView = (AutoCompleteTextView) getView().findViewById(R.id.autoCompleteTextView1); return rootView; } public void onCameraChange(CameraPosition arg0){ // TODO Auto-generated method stub } public void onMapLongClick(LatLng arg0){ llLoc = arg0; stCommand = "onTouchEvent"; lp = new ExecuteTask(); lp.execute(); } public void onMapClick(LatLng arg0){ // TODO Auto-generated method stub } class ExecuteTask extends AsyncTask<String, String, String> { @Override protected void onPreExecute(){ super.onPreExecute(); if(stCommand.compareTo("AutoCompleteTextView") != 0) { pDialog = new ProgressDialog(getActivity()); pDialog.setMessage(Html.fromHtml("<b>Search</b><br/>Loading ...")); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } } protected String doInBackground(String ... args){ do something return null; } @Override protected void onPostExecute(String file_url){ if(stCommand.compareTo("AutoCompleteTextView") != 0) pDialog.dismiss(); runOnUiThread(new Runnable() { public void run(){ do something } }); } } public void afterTextChanged(Editable s){ // TODO Auto-generated method stub } public void beforeTextChanged(CharSequence s, int start, int count, int after){ // TODO Auto-generated method stub } public void onTextChanged(CharSequence s, int start, int before, int count){ // TODO Auto-generated method stub } } 

El error dice: Error de Eclipse

¿Cómo puedo solucionar este error?

  • Android Fragments Content View aún no creado
  • ¿Hay un método que funciona como fragmento de inicio para el resultado?
  • Actualizar android PreferenceFragment
  • Comunicación entre un fragmento y una actividad - mejores prácticas
  • Cambiar la orientación de Android: Diferentes diseños, los mismos fragmentos
  • Android FragmentTabHost: No se conoce ninguna pestaña null
  • Mide la vista en el fragmento
  • Cómo implementar OnFragmentInteractionListener
  • One Solution collect form web for “RunOnUiThread en el fragmento”

    Pruebe esto: getActivity().runOnUiThread(new Runnable...

    Eso es porque:

    1) lo implícito en tu llamada a runOnUiThread se refiere a AsyncTask, no a tu fragmento.

    2) Fragment no tiene runOnUiThread

    ( http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/app/Fragment.java?av=f )

    Sin embargo Activity :

    ( http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/app/Activity.java?av=f )

    Tenga en cuenta que esto sólo ejecuta el Runnable si ya está en el hilo principal, y utiliza un Handler si no está en el hilo principal. Puedes implementar un Handler en tu fragmento si no quieres preocuparte por el contexto de this , en realidad es muy fácil:

    http://developer.android.com/reference/android/os/Handler.html

    EDIT: @ rciovati tiene razón, usted está en onPostExecute , que ya está en el hilo principal.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.