2015-10-16 16 views
8

Ho aggiornato di recente il mio progetto nella Libreria di supporto Android 23.1 e questa parte del mio codice ora genera un errore.È necessario passare in una vista non nulla

Stava funzionando prima dell'aggiornamento e commentando solo questa parte mi consente di eseguire l'app bene. Che cosa è esattamente sbagliato o è cambiato?

Glide.with(getApplicationContext()) 
      .load(R.drawable.banner) 
      .fitCenter() 
      .override(width, height/2) 
      .diskCacheStrategy(DiskCacheStrategy.RESULT) 
      .into(back); 

    if (picture != null) { 
     Glide.with(getApplicationContext()) 
       .load(picture) 
       .fitCenter() 
       .override(width/2, height/2) 
       .into(profile); 
    } else { 
     Glide.with(getApplicationContext()) 
       .load(R.drawable.profile_p) 
       .fitCenter() 
       .override(width/2, height/2) 
       .into(profile); 
    } 

Questo è il registro degli errori.

10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime: FATAL EXCEPTION: main 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime: Process: atsystems.cal, PID: 16313 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{atsystems.cal/atsystems.cal.MainActivity}: java.lang.IllegalArgumentException: You must pass in a non null View 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.access$800(ActivityThread.java:151) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:135) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5254) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:372) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: You must pass in a non null View 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:678) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at com.bumptech.glide.DrawableRequestBuilder.into(DrawableRequestBuilder.java:448) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at atsystems.cal.MainActivity.onCreate(MainActivity.java:74) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.Activity.performCreate(Activity.java:5990) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.access$800(ActivityThread.java:151)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:135)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5254)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:372)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
10-16 22:41:27.238 16313-16313/atsystems.cal E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  

sto usando un layout cassetto navigazione che contiene una vista view.this navigazione navigazione contiene il layout dell'intestazione che i visualizzazione e come risulta viene utilizzato il codice che ho commentato per visualizzare immagini per il layout dell'intestazione . Così è cambiato qualcosa nel nuovo aggiornamento della libreria?

+0

Controllare e assicurarsi che "indietro" e "profilo" non siano nulli. –

+0

si prega di verificare la riga 74 del mainActivity in quanto è dove si trova il tuo errore. – Simon

+0

Lo stesso codice funziona prima dell'aggiornamento 23.1.0, ho ripristinato e controllato anche. Sembrerebbe che ci sia un problema con l'app: caratteristica headerLayout della vista di navigazione che non trova più il layout dell'intestazione. –

risposta

10

Sembrerebbe che ci sia un problema per quanto riguarda la visualizzazione di navigazione. NavigationView findViewById can't find header view

La correzione/soluzione corrente consiste nel trovare il layout dell'intestazione utilizzando.

final NavigationView mNavigationView = (NavigationView) findViewById(R.id.navigation_view); 
    final View headerLayout = mNavigationView.inflateHeaderView(R.layout.header); 

Una volta fatto, è possibile fare riferimento a ciascun elemento nel layout dell'intestazione in questo modo.

final ImageView profile = (ImageView) headerLayout.findViewById(R.id.profile_image);