appcompat mostrano i progressi nella barra di azione causa NPE

Dopo aver aggiornato il mio SDK a tutte le ultime novità Android 5.0, non posso utilizzare le barre di avanzamento integrate nell'ActionBar in appcompat. Ho fatto tutto il solito fisso (spostare supportRequestWindowFeature () call prima di setContent () e prima di super call in oncreate), ma nulla funziona. Ecco cosa sto facendo:

public class LoginActivity extends ActionBarActivity { protected void onCreate(Bundle savedInstanceState) { supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); setContentView(R.layout.login); ... loginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ... setSupportProgressBarIndeterminateVisibility(true); } }); 

} e la traccia dello stack:

  • Fuori l'errore di memory utilizzando Universal Image Loader e le immagini vengono aggiornate
  • Come dare gradiente a TextView in android?
  • come rimuovere completamente l'indicatore della linguetta in un ActionBar
  • Come submit la notifica agli utenti registrati della stessa applicazione in android
  • Mentre fa il segno APK della mappa Google (imansible caricare la mappa non è ansible contattare i server Google) questo errore è accaduto
  • Codifica / Decodifica AndroidManifest.xml all'interno di APK
  •  10-18 19:38:21.053: E/AndroidRuntime(11206): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.internal.widget.ProgressBarCompat.setVisibility(int)' on a null object reference 10-18 19:38:21.053: E/AndroidRuntime(11206): at android.support.v7.app.ActionBarActivityDelegateBase.updateProgressBars(ActionBarActivityDelegateBase.java:786) 10-18 19:38:21.053: E/AndroidRuntime(11206): at android.support.v7.app.ActionBarActivityDelegateBase.setSupportProgressBarIndeterminateVisibility(ActionBarActivityDelegateBase.java:692) 10-18 19:38:21.053: E/AndroidRuntime(11206): at android.support.v7.app.ActionBarActivity.setSupportProgressBarIndeterminateVisibility(ActionBarActivity.java:327) 10-18 19:38:21.053: E/AndroidRuntime(11206): at com.myapppackage.LoginActivity$2.onClick(LoginActivity.java:82) 

    Questo è su un Nexus 5 che esegue Android 4.4.4. La tematica dell'applicazione eredita da Theme.AppCompat. L'applicazione è costruita con Android 5.0 e targetSDK è 21. Quando utilizzo setSupportProgress per una normale barra di progressione orizzontale, la stessa cosa succede. Qualsiasi aiuto è molto apprezzato.

    EDIT: Trovato il problema. In android.support.v7.internal.widget.ToolbarWidgetWrapper:

     @Override public void initIndeterminateProgress() { Log.i(TAG, "Progress display unsupported"); } 

    Forse non un bug ma una caratteristica? Le barre degli strumenti sembrano essere i nuovi ActionBars.

    Ho una copia di appcompat V20 su un altro computer, quindi tornerò a questo.

    4 Solutions collect form web for “appcompat mostrano i progressi nella barra di azione causa NPE”

    Una soluzione ansible per questo potrebbe essere quella di aggiungere manualmente un ProgressBar come una vista personalizzata e sovrascrivere setSupportProgressBarIndeterminateVisibility

    In onCreate:

     ProgressBar progressBar = new ProgressBar(this); progressBar.setVisibility(View.GONE); progressBar.setIndeterminate(true); getSupportActionBar().setDisplayShowCustomEnabled(true); getSupportActionBar().setCustomView(progressBar); 

    Nella tua attività:

     @Override public void setSupportProgressBarIndeterminateVisibility(boolean visible) { getSupportActionBar().getCustomView().setVisibility(visible ? View.VISIBLE : View.GONE); } 

    Naturalmente, passando a una barra degli strumenti e aggiungendo il ProgressBar ci dovrebbe essere più prova futura.

    Sembra che i progressi indeterminati e la barra orizzontale di avanzamento non siano supportti nella libreria di supporto V21. Dalla android.support.v7.internal.widget.ToolbarWidgetWrapper:

     @Override public void initIndeterminateProgress() { Log.i(TAG, "Progress display unsupported"); } 

    Chris Banes ha confermato questo: http://chris.banes.me/2014/10/17/appcompat-v21/#comment-1642002459 . Sto utilizzando una vecchia copia di appcompat v20. Ecco una zip per chiunque ne abbia bisogno: https://drive.google.com/file/d/0B2dSjU9N8KdZUEFuMkhLZzJZOFU/view?usp=sharing

    EDIT: Il seguente non funziona perché ProgressBarCompat è una class nascosta e non può essere aggiunto al layout XML. Sembra un bug nella libreria di appcompat.


    Sta cercando una barra di avanzamento in ActionBarActivityDelegateBase.java :

     private ProgressBarCompat getCircularProgressBar() { ProgressBarCompat pb = (ProgressBarCompat) mActivity.findViewById(R.id.progress_circular); if (pb != null) { pb.setVisibility(View.INVISIBLE); } return pb; } 

    E usandolo nel metodo updateProgressBars() nella stessa class. Sembra che sia allo sviluppatore aggiungere un ProgressBarCompat alla tua attività.

    Per chiunque altro faccia un aggiornamento delle loro app / librerie – hanno abbandonato il supporto per la barra di progresso nella libreria di appsupport v7. https://code.google.com/p/android/issues/detail?id=78310

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.