片段中的Android Snackbar NullPointerException

Mur*_*gan 14 android snackbar

我想在我的应用程序中添加一个基本的快餐栏,但我收到一个错误,我无法弄清楚为什么.

我在片段中的onCreateView()方法中添加了这段代码.

Snackbar.make(view, "Snackbar", Snackbar.LENGTH_LONG)
            .setAction("Action", null).show();
Run Code Online (Sandbox Code Playgroud)

并收到此错误:

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)
...
Run Code Online (Sandbox Code Playgroud)

小智 19

如果将Fragment添加到现有活动中(请记住,您可以通过xml添加它),则应将SnackBar的方法调用到Fragment的onActivityCreated()方法中.

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Snackbar.make(view, "Snackbar", Snackbar.LENGTH_LONG)
        .setAction("Action", null).show();
}
Run Code Online (Sandbox Code Playgroud)

  • 或者您可以在片段中添加CoordinatorLayout. (3认同)

Mic*_*ael 13

1.将其移动到onActivityCreated方法.

2.在make方法中使用getView(),如下所示:

Snackbar.make(getView(), "Snackbar", Snackbar.LENGTH_LONG)
        .setAction("Action", null).show();
Run Code Online (Sandbox Code Playgroud)