SetSupportProgressBarIndeterminateVisibility que genera java.lang.NullPointerException cuando se utiliza con Android 5.0 SDK (API 21)
Mi clase de actividad extiende android.support.v7.app.ActionBarActivity. Estoy solicitando característica de ventana y llamando a setSupportProgressBarIndeterminateVisibility () en el método onCreate () como sigue:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.activity_main); setSupportProgressBarIndeterminateVisibility(true); }
No puedo entender lo que está mal con mi código y por qué estoy recibiendo java.lang.NullPointerException
planteado por el setSupportProgressBarIndeterminateVisibility()
.
- Styling Toolbar no funciona con AppCompat
- Fragmento creado de nuevo en la parte inferior de la vista de navegación seleccionada
- ¿Quieres usar ViewPager, no puede obtener android.support. * Ser reconocido?
- Iniciar Actividad de Fragmento utilizando Transición (soporte API 21)
- Enum vs android @Intdef - cual es mejor optimizado
Mis dependencias gradle contiene:
compile 'com.android.support:appcompat-v7:21.0.0'
¿Alguien sabe cómo usar la barra de progreso indeterminada en la barra de acción support.v7 con la API 21?
- La biblioteca de soporte de RenderScript V8 falla al compilar
- Las versiones resueltas para la aplicación (22.0.0) y la aplicación de prueba (21.0.3) difieren
- Grabación de la barra de herramientas en la barra de herramientas extendida
- ViewPager en un NestedScrollView
- RequiereApi vs TargetApi anotaciones android
- NotifyDataSetChange no funciona en RecyclerView
- Excepción generada durante la renderización: Ver android.support.v7.widget.Toolbar no creada con el contexto adecuado
- El comportamiento de popBackStack () difiere después de la actualización de la biblioteca de soporte de 23.1.1 a 25.1.0
Es necesario utilizar la barra de herramientas en lugar de ActionBar y agregar la barra de progreso en la barra de herramientas.
Aquí hay una solución fácil para insertar ProgressBar indeterminado en la barra de herramientas; Resulta que no es difícil en absoluto 🙂 Sólo tiene que poner su elemento ProgressBar xml dentro de su barra de herramientas como esto:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary"> <ProgressBar android:id="@+id/progress_spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:indeterminate="true" android:visibility="gone" /> </android.support.v7.widget.Toolbar>
Y luego en su AppCompatActivity , simplemente recuperar la ProgressBar después de recuperar la barra de herramientas y establecer el ProgressBar a visible o invisible cuando lo necesite.
protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.toolbar); mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); progressBar = (ProgressBar) findViewById(R.id.progress_spinner); //Make progress bar appear when you need it progressBar.setVisibility(View.VISIBLE); //Make progress bar disappear progressBar.setVisibility(View.INVISIBLE); }
Espero que esto ayude 🙂
EDIT: reemplazó ActionBarActivity con AppCompatActivity según las últimas pautas de las bibliotecas de soporte de Android.
Por este comentario en el post de anuncio de Chris Banes (el autor de AppCompat) AppCompat v21:
De cualquier manera, las barras de progreso no son compatibles en la barra de herramientas.
Por qué:
Debido a que la barra de herramientas es un widget altamente enfocado. Si quieres un ProgressBar, añádelo a la barra de herramientas (es sólo un ViewGroup).
Me esperaba más información como la documentación oficial se actualiza aquí en breve.
- SDK mínimo recomendado para aplicaciones para Android
- Android P2P juego multijugador (con a) XMPP / Google charla b) JXTA peerdroid c) de otra manera)