Ho uno snack bar in cui voglio rimuovere textview ma quando sto usando View.INVISIBLE quindi non sta visualizzando, ma quando si usa View.GONE l'app si blocca dicendo NullPointerException. Perchè così?
Ecco il codice
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
ECCEZIONE FATALE: principale Processo: com.example.ankit.test, PID: 29950 java.lang.NullPointerException: tentativo di richiamare il metodo virtuale "int android.text.Layout.getLineCount ()" su un oggetto nullo di riferimento su android.support.design.internal.SnackbarContentLayout.onMeasure (SnackbarContentLayout.java:85) su android.view.View.measure (View.java:18820) su android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) su android.widget.FrameLayout.onMeasure (FrameLayout.java:194) su android.support.design.widget.Snackbar $ SnackbarLayout.onMeasure (Snackbar.java:335) su android.view.View.measure (View.java:18820) su android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) su android.widget.FrameLayout.onMeasure (FrameLayout.java:194) su android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:139) su android.view.View.measure (View.java:18820) su android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) su android.support.v7.widget.ActionBarOverlayLayout.onMeasure (ActionBarOverlayLayout.java:391) su android.view.View.measure (View.java:18820) su android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) su android.widget.FrameLayout.onMeasure (FrameLayout.java:194) su android.view.View.measure (View.java:18820) su android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) su android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) su android.widget.LinearLayout.measureVertical (LinearLayout.java:748) su android.widget.LinearLayout.onMeasure (LinearLayout.java:630) su android.view.View.measure (View.java:18820) su android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5961) su android.widget.FrameLayout.onMeasure (FrameLayout.java:194) a com.android.internal.policy.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2680) su android.view.View.measure (View.java:18820) su android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2132) su android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1248) su android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1484) su android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1139) su android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:6091) su android.view.Choreographer $ CallbackRecord.run (Choreographer.java:858) su android.view.Choreographer.doCallbacks (Choreographer.java:670) su android.view.Choreographer.doFrame (Choreographer.java:606) su android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:844) su android.os.Handler.handleCallback (Handler.java:739) su android.os.Handler.dispatchMessage (Handler.java:95) su android.os.Looper.loop (Looper.java:148) su android.app.ActivityThread.main (ActivityThread.java:5437) a java.lang.reflect.Method.invoke (metodo nativo) a com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) su com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
risposte:
0 per risposta № 1prova prima a creare lo Snackbar in questo modo
// Create the Snackbar
Snackbar snackbar = Snackbar.make(containerLayout, "", Snackbar.LENGTH_LONG);
Ottieni la vista del layout dello Snackbar
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
Nascondi il testo di snackbar in questo modo
TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
textView.setVisibility(View.INVISIBLE);
imposta il testo a snackbar come questo
TextView textViewTop = (TextView)
snackView.findViewById(R.id.text);
textViewTop.setText(text);
Aggiungi la vista al layout di Snackbar
layout.addView(snackView, 0);
Mostra lo Snackbar
snackbar.show();