当前位置: 首页 > 知识库问答 >
问题:

Viewpager编程创建的Tablayout不工作

於永寿
2023-03-14

activity班:

public class DynamicActivity extends AppCompatActivity{

    private LinearLayout mLinearLayout;
    private View mView;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mLinearLayout = new LinearLayout(DynamicActivity.this);
        mLinearLayout.setOrientation(LinearLayout.VERTICAL);
        mLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));


        TabLayout tabLayout = new TabLayout(DynamicActivity.this);
        tabLayout.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
        tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        tabLayout.setBackgroundColor(Color.CYAN);
        mLinearLayout.addView(tabLayout);


        ViewPager viewPager = new ViewPager(DynamicActivity.this);
        viewPager.setLayoutParams(new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));
        viewPager.setBackgroundColor(Color.BLUE);
        mLinearLayout.addView(viewPager);

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(viewPagerAdapter);

        tabLayout.addTab(tabLayout.newTab());
        tabLayout.addTab(tabLayout.newTab());
        tabLayout.addTab(tabLayout.newTab());

        tabLayout.setupWithViewPager(viewPager);

        setContentView(mLinearLayout);
    }
}

**Adapter Class :**
public class ViewPagerAdapter extends FragmentStatePagerAdapter{
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "Test";
    }

    @Override
    public Fragment getItem(int position) {
        return new TestFagment();
    }

    @Override
    public int getCount() {
        return 3;
    }
}

例外情况:

致命异常:main

E/AndroidRuntime:致命异常:主进程:com.example.locale.TablayoutDynamicSample.27084 java.lang.IllegalState异常:带有适配器com.example.locale.TablayoutDynamicSample.ViewPagerAdapter@3B0E90D6的ViewPager在Android.support.v4.app.FragmentStatePagerAdapter.StartupDate(FragmentStatePagerAdapter.87)在Android.support.v4.view.ViewPager.Populate(Android.support.v7.widget.contentframelayout.onMeasure(contentframelayout.java:139)在Android.view.view.measure(view.java:18580)在Android.support.v7.widget.actionbaroverlayout.onMeasure(actionbaroverlayout.java:5827)在Android.support.v7.widget.actionbaroverlayout.393)在Android.view.view.view.measure(view.java:5827)在.FrameLayout.onMeasure(FrameLayout.java:430)在com.android.internal.policy.impl.PhoneWindow$decoview.onMeasure(PhoneWindow.java:2897)在android.view.view.measure(view.java:18580)在android.view.view.measure(view.view.rootimpl.performMeasure(view.rootimpl.java:2248)在android.view.view.rootimpl.measurehiarchy(ain(ActivityThread.java:5951)在java.lang.Reflect.Method.Invoke(原生方法)在java.lang.Reflect.Method.Invoke(Method.java:372)在com.android.internal.os.zygoteInit$MethodAndargscaller.run(zygoteInit.java:1388)在com.android.internal.os.zygoteInit.main(zygoteInit.java:1183)

共有1个答案

柯星辰
2023-03-14

它说“vewpager with Adapter viewpageradapter@3b0e90d6 requires a view id”所以请尝试以下操作:

viewPager.setId(anyInteger);
 类似资料:
  • 本文向大家介绍TabLayout实现ViewPager指示器的方法,包括了TabLayout实现ViewPager指示器的方法的使用技巧和注意事项,需要的朋友参考一下 在TabLayout出现之前,基本都是通过 ViewPager+FragmentPagerAdapter+第三方开源tab指示器(TabPageIndicator)来实现的。现在Android内部提供了现成的TabLayout控件来

  • 仓库中存放开发项目代码、文档等,需要创建一个工程目录。   创建成功!

  • 问题内容: 有没有办法以不可反向工程的格式部署Java程序? 我知道如何将应用程序转换为可执行的JAR文件,但是我想确保代码不会被反向工程,或者至少不会轻易进行反向工程。 对源代码的混淆不算在内……这使理解代码变得更加困难,但并没有将其隐藏。 完成程序后,我仍然可以访问原始源,因此维护应用程序将不是问题。如果应用程序是分布式的,我不希望任何用户都能对其进行反编译。混淆并不能实现这一点,因为用户仍然

  • 本文向大家介绍TabLayout+ViewPager实现切页的示例代码,包括了TabLayout+ViewPager实现切页的示例代码的使用技巧和注意事项,需要的朋友参考一下 安卓使用TabLayout+ViewPager+Fragment 实现页面切换,可实现左右滑动切换视图界面和点击切换 可自定义菜单栏是在顶部还是在底部 一、实现效果: 二、实现过程: 2.1 一些重要的设置 添加必须依赖:

  • 我有个罕见的问题。我有一个动态填充选项卡的活动(多达20个选项卡)。每个片段都有的实现和一个菜单,其中包含一个书签图标,当按下时会改变颜色。有一个类型的类变量,它是在调用fragment的时设置的。这是为了使我能够在之外设置书签菜单项(这也是动态完成的)。 问题:当父活动只有一个选项卡(一个片段实例)时,这个实现工作得很好。但是,使用多个选项卡时,应用程序会出现错误:

  • 我已经运行了,然后 退货 我知道我的当前有问题。下面是从 我真的不知道该怎么设置,因为我目前对终端非常陌生。任何帮助都将不胜感激。非常感谢。