14

アプリケーションに基本的なスナックバーを追加したいのですが、理由がわからないというエラーが表示されました。

Fragment の onCreateView() メソッドにこのコードを追加しました。

Snackbar.make(view, "Snackbar", Snackbar.LENGTH_LONG)
            .setAction("Action", null).show();

そして、このエラーを受け取りました:

06-01 10:26:09.955    1232-1232/? E/ActivityThread﹕ Failed to find provider  info for me.muraterdogan.watchme.MetricaContentProvider
06-01 10:26:10.075    1232-1447/? E/ActivityThread﹕ Failed to find provider info for me.muraterdogan.watchme.YPLContentProvider
06-01 10:33:55.044    6646-6646/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: me.muraterdogan.watchme, PID: 6646
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference
        at android.support.design.widget.Snackbar.<init>(Snackbar.java:116)
        at android.support.design.widget.Snackbar.make(Snackbar.java:140)
        at me.muraterdogan.watchme.fragments.TrendingFragment.GetData(TrendingFragment.java:90)
        at me.muraterdogan.watchme.fragments.TrendingFragment.onCreateView(TrendingFragment.java:83)
...
4

6 に答える 6

2

プロセスごとに、スナックバーはビューを検索します。

  • フラグメント ビューを使用しました
  • ただし、フラグメントの onAttach がまだ呼び出されていないため、フラグメント ビュー自体はまだアタッチされていません。

したがって、アプリ自体は、実行時に実際にフラグメントのビューを参照していたことを認識していません。

フラグメントの「onResume」にスナックバーの show メソッドを配置してみてください。お役に立てれば。

于 2016-02-02T01:03:04.297 に答える
0

ドキュメントにあるように、「Snackbar は、ビューに指定された値から Snackbar のビューを保持する親ビューを見つけようとします」。

そのため、現時点でアタッチされている任意のビューを渡すことができます。

于 2016-05-03T00:08:30.813 に答える