2017-08-19 2 views
-2

J'ai un snack dans lequel je veux supprimer textview mais quand j'utilise View.INVISIBLE alors il ne montre pas uo mais en utilisant View.GONE alors app s'écroule en disant NullPointerException. Pourquoi ça?Pourquoi View.Gone ne fonctionne pas dans Snackbar?

Voici le code

MainActivity.java

Snackbar sk=Snackbar.make(findViewById(R.id.ll),"It is checked",Snackbar.LENGTH_INDEFINITE); 
sk.setAction("Undo",m); 
sk.setActionTextColor(Color.GREEN);  

Snackbar.SnackbarLayout sl = (Snackbar.SnackbarLayout) sk.getView(); 

TextView t=sl.findViewById(android.support.design.R.id.snackbar_text); 
t.setVisibility(View.GONE); 

Logcat

d'exception irrécupérable: principal processus: com.example.ankit.testing, PID: 29950 java. lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'int android.text.Layout.getLineCount()' sur une référence d'objet nul à android.support.design.internal.SnackbarContentLayout.onMeasure (SnackbarContentLayout.java:85) à android.view.View.measure (View.java:18820) à android.view.ViewGroup.measureChildWithMargins (ViewGroup.java: 5961) à android.widget.FrameLayout.onMeasure (FrameLayout.java:194) à android.support.design.widget.Snackbar $ SnackbarLayout.onMeasure (Snackbar.java:335) à android.view.View.measure (View.java:18820) à android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) à android.widget.FrameLayout.onMeasure (FrameLayout.java:194) à android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:139) à android.view.View.measure (View.java:18820) à android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) à android.support.v7.widget.ActionBarOverlayLayout.onMeasure (ActionBarOverlayLayout.java:391) à android.view.View.measure (View.java:18820) à android.view.ViewGroup.measureChildWithMargins (ViewGroup.java : 5961) à android.widget.FrameLayout.onMeasure (FrameLayout.java:194) à android.view.View.measure (View.java:18820) à android.view.ViewGroup.measureChildMithMargins (ViewGroup.java:5961) à android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) à android.widget.LinearLayout.measureVertical (LinearLayout.java:748) à android.widget.LinearLayout.onMeasure (LinearLayout. java: 630) à android.view.View.measure (View.java:18820) à android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) à android.widget.FrameLayout.onMeasure (FrameLayout.java: 194) à com.android.internal.policy.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2680) à android.view.View.measure (View.java:18820) à android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2132) à android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1248) à android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1484) à android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1139) à android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:6091) à android.view.Choreographer $ CallbackRecord.run (Choreographer.java:858) à android.view.Choreographer.doCallbacks (Choreographer.java:670) à android.view.Choreographer.doFrame (Choreographer.java:606) à android.view.Choreographer $ FrameDisplayEventReceiver. run (Choreographer.java:844) à android.os.Handler.handleCallback (Handler.java:739) à android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5437) à java.lang.reflect.Method.invoke (Méthode native) à com.android.inte rnal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

+0

https://stackoverflow.com/questions/32453946/how-to-customize-snackbars-layout/41154330 –

Répondre

0

essayer cette première création du Snack-bar comme ce

// Create the Snackbar 
Snackbar snackbar = Snackbar.make(containerLayout, "", Snackbar.LENGTH_LONG); 

Obtenez le point de vue de la mise en page de

Snack-bar
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView(); 

Masquer le texte des snackbar comme celui-ci

TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text); 
    textView.setVisibility(View.INVISIBLE); 

texte mis à bar sont à comme celui-ci

TextView textViewTop = (TextView)  
snackView.findViewById(R.id.text); 
textViewTop.setText(text); 

Ajouter la vue à la disposition du Snack-bar

layout.addView(snackView, 0); 

Afficher la Snackbar

snackbar.show(); 
+0

..... mais je Thanx ne veux pas ajouter un autre Laout .Je veux juste supprime le texte via View.GONE. Pourquoi ça ne marche pas? C'est mon problème –