java.lang.NullPointerException:尝试调用虚拟方法“ void android.support.v4.view.ViewPager.setAdapter”(应用崩溃)

时间:2019-10-02 20:16:54

标签: java android android-studio android-viewpager

我正在构建一个android应用,并尝试使功能成为选项卡导航。发生的问题是 SetAdapter 在启动屏幕启动后使我的应用程序崩溃。

代码如下:

MainActivity.xml

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //this creates the three-dot button in the right on the toolbar
    Toolbar toolbar = findViewById(R.id.toolbar);
    //uses toolbar as action bar
    setSupportActionBar(toolbar);

    ViewPager viewPager = findViewById(R.id.pager);
    adapter = new ViewPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(adapter); <-- this is the line where error occurs (line 32)

    tabLayout = findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}

activity_main.xml (the layout in res > layout)

...
<androidx.viewpager.widget.ViewPager
     xmlns:android="http://schemas.android.com/apk/res/
     android:id="@+id/pager"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />

Android Studio中的错误:

Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app_dev.criss.docsexpirationreminder/com.app_dev.criss.docsexpirationreminder.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:201)
    at android.app.ActivityThread.main(ActivityThread.java:6806)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference
    at com.app_dev.criss.docsexpirationreminder.MainActivity.onCreate(MainActivity.java:32)
    at android.app.Activity.performCreate(Activity.java:7224)
    at android.app.Activity.performCreate(Activity.java:7213)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)

如果我评论以下几行,则该应用程序实际上会打开,没有标签和标题栏。

ViewPager viewPager = findViewById(R.id.pager);
adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);

<1 line was skipped>

tabLayout.setupWithViewPager(viewPager);

我不知道怎么了...

0 个答案:

没有答案