【问题标题】:NULLPOINTEREXCEPTION while implement fragmentNULLPOINTEREXCEPTION 同时实现片段
【发布时间】:2019-11-29 17:43:50
【问题描述】:

我是安卓编程新手。我关注了来自 youtube 的视频,但我不断收到 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference error at line49

我可以知道问题的原因吗?

public class main extends AppCompatActivity{

TextView tv_title;
Button btn_profile, btn_notification, btn_option;
TabLayout tabLayout;
ViewPager viewPager;
TabItem tabNews, tabScrim, tabTeam, tabReport;
mainadapter mmainadapter;


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

    btn_profile = findViewById(R.id.btn_main_profile);
    btn_notification = findViewById(R.id.btn_main_notification);
    btn_option = findViewById(R.id.btn_main_option);

    tabLayout = findViewById(R.id.tabLayout);
    tabNews = findViewById(R.id.tabMain);
    tabScrim = findViewById(R.id.tabScrim);
    tabTeam = findViewById(R.id.tabTeam);
    tabReport = findViewById(R.id.tabReport);
    viewPager = findViewById(R.id.viewPager);

    tabLayout.setupWithViewPager(viewPager);

    mmainadapter = new mainadapter(getSupportFragmentManager(),     tabLayout.getTabCount());
    viewPager.setAdapter(mmainadapter);

    tabLayout.addOnTabSelectedListener(new     TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition()); <<<<49
        }

        @Override
        public void onTabUnselected(TabLayout.Tab 
        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

}
}

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.scrimmagesystem, PID: 20764
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
        at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:396)
        at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:391)
        at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:107)
        at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1010)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1224)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:669)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:631)
        at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:612)
        at com.example.scrimmagesystem.main$1.onTabSelected(main.java:49)
        at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1608)
        at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1601)
        at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1569)
        at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1874)
        at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:2059)
        at android.view.View.performClickInternal(View.java:6635)
        at android.view.View.access$3100(View.java:794)
        at android.view.View$PerformClick.run(View.java:26199)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7593)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

提前致谢!

注意:编写的代码过多,无法编辑。 代码写多了需要多解释 代码写多了需要多解释

【问题讨论】:

  • 该错误仅在我单击第二个选项卡时出现。第一个标签很好

标签: android android-viewpager fragment android-tablayout


【解决方案1】:

您无需在TabLayout 上设置addOnTabSelectedListener,因为您已经通过调用这行代码将其设置为ViewPager

tabLayout.setupWithViewPager(viewPager);

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多