working thread runonuithread not ejemplo activity android

not - Android: usar runOnUiThread para realizar cambios en la interfaz de usuario desde un hilo



runonuithread(() (5)

¿Su diseño es correcto? ¿Intentaste que esto funcionara primero con un diseño vertical? ¿Solo para ver si la barra de progreso es visible cuando comienza su actividad?

Estoy usando una vista de título personalizada y me gustaría mostrar / ocultar una barra de progreso en la vista de título cuando un hilo está funcionando.

Este es el XML de mi vista de título

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/image_left_btn" android:layout_width="75dip" android:layout_height="wrap_content" android:text="Back" /> <TextView android:id="@+id/image_title_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="20dip" android:textStyle="bold" android:textColor="#fff" android:layout_gravity="center" android:gravity="center" android:paddingLeft="8dip" android:paddingRight="8dip" /> <ProgressBar android:id="@+android:id/progress_small_title" style="?android:attr/progressBarStyleSmall" android:layout_width="75dip" android:layout_height="wrap_content" android:paddingRight="8dip"/> </LinearLayout>

En mi actividad, después de configurar esto como la barra de título personalizada, hago esto

titleProgress = (ProgressBar)findViewById(R.id.progress_small_title); titleProgress.setVisibility(View.INVISIBLE);

donde titleProgress es el objeto ProgressBar.

Esto es lo que hago en mi hilo.

runOnUiThread(new Runnable() { public void run() { titleProgress.setVisibility(View.VISIBLE); } }); //long operation here runOnUiThread(new Runnable() { public void run() { titleProgress.setVisibility(View.INVISIBLE); } });

Pero no hay cambio en la barra de progreso. Nunca se muestra. ¿Alguien puede decirme qué está mal con el código?

¿Es posible mostrar la barra de progreso del título en un título personalizado?

Gracias.


Intente cambiar el estilo de la barra de progreso a horizontal:

style="?android:attr/progressBarStyleHorizontal"

El original

style="?android:attr/progressBarStyleSmall"

da una "barra de progreso" circular que no se puede ver completamente en la barra de título.



Pocas cosas para probar:

1) (Esto probablemente no lo es) Asegúrese de que " titleProgress " sea volátil.

2) Intente lanzar algunos postInvalidate() o titleProgress.postInvalidate() allí para desencadenar un redibujado.

3) ¿Has sacrificado una máquina x486 en un altar parecido a un robot verde gigante? (es una broma)

Déjame saber si esos dos primeros (y si estás realmente desesperado, el tercero) te llevan a algún lado.


usar comunicación con manejadores,

  1. ejecuta tu hilo
  2. en run() : debe enviar un mensaje al Handler que actualizará progressBar (horizontal, por supuesto): handler.sendMessage(handler.obtainMessage());
  3. en su Actividad, debe anular el método handleMessage(Message msg ) : así

    handler = new Handler(){ @override public void handleMessage(Message msg ) { //here you write the code which will update your progressBar } };