【问题标题】:App stops running after setting tablayout with ViewPager使用 ViewPager 设置 tablayout 后应用程序停止运行
【发布时间】:2017-09-07 20:14:58
【问题描述】:

我使用来自 TabActivity 项目的修改后的 SectionPagerAdapter 创建了我自己的 TabLayout 菜单(来自一个空的 Activity)。我只改了getItem()方法,去掉了页面标题方法。

public Fragment getItem(int position) {
    switch (position)
    {
        case 0:
            HomeActivity home = new HomeActivity();
            return home;
        case 1:
            PayActivity pay = new PayActivity();
            return pay;
        case 2:
            VideoActivity video = new VideoActivity();
            return video;
        case 3:
            BillActivity bill = new BillActivity();
            return bill;
        default:
            return null;
    }
}

}

并在执行后

    TabLayout tabToolbar = (TabLayout) findViewById(R.id.tabToolbar);
    ViewPager viewPager = (ViewPager) findViewById(R.id.container);

    SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(mSectionsPagerAdapter);
    tabToolbar.setupWithViewPager(viewPager);

我的应用程序已停止。

如果我发表评论

tabToolbar.setupWithViewPager(viewPager);

我的菜单不起作用,但我可以在 ViewPager 中的片段之间滑动。

我想用我的菜单按钮和鼠标光标滑动。

如果您需要更多信息或资源,请告诉我。

编辑:

错误日志显示:

09-08 06:19:05.822 4207-4207/com.example.fdai3744.t_online20 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.example.fdai3744.t_online20, PID: 4207
                                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fdai3744.t_online20/com.example.fdai3744.t_online20.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setColorFilter(int, android.graphics.PorterDuff$Mode)' on a null object reference
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                                                   at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                   at android.os.Looper.loop(Looper.java:154)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setColorFilter(int, android.graphics.PorterDuff$Mode)' on a null object reference
                                                                                   at com.example.fdai3744.t_online20.MainActivity.onCreate(MainActivity.java:37)
                                                                                   at android.app.Activity.performCreate(Activity.java:6679)
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                                                                                   at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:154) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

第二次编辑:

我发现我的适配器没有“public CharSequence getPageTitle(int position)”方法。

【问题讨论】:

  • 你的日志有错误吗?
  • 分享你的日志猫
  • 完成!请参阅下面我的问题。

标签: android android-fragments android-viewpager android-tablayout


【解决方案1】:

在setupwithviewpager下面添加这行代码;

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

编辑:

我已经更新了答案,你可以参考这个答案来查看只有图标的标签。

https://stackoverflow.com/a/32173670/5339829

【讨论】:

  • 不,我发现我从我的 Adapter 类中删除了 getPageTitle 方法。它有效,但不适用于图标。我想要一个也可以返回图标的 FragmentAdapter。
  • 你可以搜索带有文本和图标的tablayout,那里有很多库
  • 我正在寻找一个合适的 FragmentAdapter,我也只能将它用于没有文本的图标。
  • 感谢您的帮助! :)
猜你喜欢
  • 2014-03-25
  • 1970-01-01
  • 2018-03-06
  • 2018-11-28
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多