首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:未分配区段页面适配器

Android:未分配区段页面适配器
EN

Stack Overflow用户
提问于 2018-04-20 17:34:05
回答 1查看 28关注 0票数 0

我有以下代码:

代码语言:javascript
复制
package com.example.me.echoboard;

import android.support.design.widget.TabLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v4.view.ViewPager;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private SectionsPageAdapter mSectionsPageAdapter;
    private ViewPager mViewPager;

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

        mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
        mViewPager = findViewById(R.id.container);
        setupViewPager(mViewPager);

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

    private void setupViewPager(ViewPager viewPager){
        SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
        adapter.addFragment(new Tab1Fragment(), "Message Board");
        adapter.addFragment(new Tab2Fragment(), "Statistics");
        adapter.addFragment(new Tab3Fragment(), "My Notes");
        viewPager.setAdapter(adapter);
    }
}

我以某种方式破坏了我的计划。调试的错误是,在最后一行中,我将viewPager设置为适配器,据说该适配器为null。

IDE确实证实了这一点。在mSectionsPageAdapter上徘徊在private SectionsPageAdapter mSectionsPageAdapter;上时,我被告知它是赋值的,但从未被访问过(这就说明了为什么它是null)。然而,这显然是不正确的,它被指定为mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());

我看不出问题出在哪里。同样,代码的结构也很好,在我开始使用一些数据可视化工具之前,它运行得非常完美,随后出现了错误消息。

有人知道从哪里开始找吗?

谢谢!

代码语言:javascript
复制
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.me.echoboard, PID: 16132
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.me.echoboard/com.example.me.echoboard.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:2924)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
                      at android.app.ActivityThread.-wrap14(ActivityThread.java)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6692)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
                   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.example.me.echoboard.MainActivity.setupViewPager(MainActivity.java:31)
                      at com.example.me.echoboard.MainActivity.onCreate(MainActivity.java:20)
                      at android.app.Activity.performCreate(Activity.java:6912)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985) 
                      at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6692) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-20 17:54:08

未使用的分配给mSectionsPageAdapter的问题,虽然是正确的,但却是一个“鲱鱼”问题。根据您发布的异常文本,在将该适配器分配给NullPointerException期间将抛出一个ViewPager,这意味着ViewPager的引用为null。

该空引用起源于行mViewPager = findViewById(R.id.container);,因此请确保在您的布局文件中,该视图寻呼机的id确实是id/container

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49946996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档