/ / View.GoneがSnackbarで機能しないのはなぜですか。 - アンドロイド、スナックバー

なぜView.GoneがSnackbarで動作しないのですか? - アンドロイド、スナックバー

私はtextviewを削除したいのですがView.INVISIBLEを使用しているときにそれはuoを表示していませんがView.GONEを使用しているときにNullPointerExceptionを言ってアプリがクラッシュしていますなぜそうなのか?

ここにコードがあります

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);

ログキャット

致命的な例外:メイン プロセス:com.example.ankitテスト、PID:29950 java.lang.NullPointerException:nullオブジェクト参照に対して仮想メソッド "int android.text.Layout.getLineCount()"を呼び出そうとしました 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) at 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.measureChildWithMargins(ViewGroup.java:5961) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at 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) at android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:6091) at android.view.Choreographer $ CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doコールバック(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) atroid.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5437) java.lang.reflect.Method.invoke(ネイティブメソッド) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)で

回答:

回答№1は0

最初に試してみて、このようにSnackbarを作成してください。

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

スナックバーのレイアウトビューを取得する

 Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();

このようなスナックバーのテキストを隠す

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

このようにテキストをsnackbarに設定します

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

スナックバーのレイアウトにビューを追加する

layout.addView(snackView, 0);

スナックバーを表示する

snackbar.show();