简体   繁体   English

如何在Android 6.0+下使用TabHost

[英]How to use TabHost under android 6.0+

Okay, I decided that using TabHost would be nice in my little app. 好的,我认为使用TabHost在我的小应用程序中会很好。 However, under Android 6.0+, TabActivity and several others have been deprecated. 但是,在Android 6.0+下,不推荐使用TabActivity和其他几个功能。 So I have written this: 所以我写了这个:

public class TabMain extends Activity{
@Override
protected void onCreate(Bundle bundle){
    super.onCreate(bundle);

    setContentView(R.layout.tab_main);
    TabHost tabHost = (TabHost)findViewById(R.id.tab_main_tabhost);
    tabHost.setup();//several lines here....}}

And when I run this code, IDE throws me an RuntimtException: "java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?" 当我运行此代码时,IDE会抛出RuntimtException:“ java.lang.IllegalStateException:您是否忘了调用'public void setup(LocalActivityManager activityGroup)'?” And I found out that ActivityGroup is also deprecated. 我发现ActivityGroup也已弃用。 How should I bypass this? 我应该如何绕过呢?

try this 尝试这个

<android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabGravity="fill"/>
        <android.support.v4.view.ViewPager
            android:id="@+id/home_viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

in your activity 在你的活动中

viewPager = (ViewPager) findViewById(R.id.home_viewpager);
        viewPager.setOffscreenPageLimit(4);
        if (viewPager != null) {
            setupViewPager(viewPager);
        }
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

method is 方法是

private void setupViewPager(ViewPager viewPager) {
        adapter = new Adapter(getSupportFragmentManager());
        adapter.addFragment(new Store(), "Store");//fragment class name
        adapter.addFragment(new Post(), "GG Connect");//fragment class name


        viewPager.setAdapter(adapter);

    }
    static class Adapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragments = new ArrayList<>();
        private final List<String> mFragmentTitles = new ArrayList<>();

        public Adapter(FragmentManager fm) {
            super(fm);
        }

        public void addFragment(Fragment fragment, String title) {
            mFragments.add(fragment);
            mFragmentTitles.add(title);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragments.get(position);
        }

        @Override
        public int getCount() {
            return mFragments.size();
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitles.get(position);
        }
    }

您应该使用TabLayout和ViewPager。

Here is an answer I found through hours search on internet Android Tabs with Fragements . 这是我通过小时数在带有Fragements的Android Android选项卡上搜索找到的答案。 I think it's a viable solution here. 我认为这是一个可行的解决方案。

ViewPage and TabLayout are in the android.support package meaning they support the backward versions, that's the main reason why I chose not to use it. ViewPage和TabLayout位于android.support软件包中,这意味着它们支持向后版本,这就是我选择不使用它的主要原因。 It's hard to even study the new version of android, and even harder to make backward-compatible code. 甚至很难研究新版本的android,甚至更难制作向后兼容的代码。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法在Android 6.0+上关闭AlertDialog - AlertDialog not dismiss on Android 6.0+ 如何在 Android 6.0+ 中获得将文件写入 SDCard 的权限 - How to get permission to write files into SDCard in Android 6.0+ android 6.0+如何同时询问多个权限 - How to ask multiple permissions at the same time in android 6.0+ Android 6.0+上的微调器背景不正确 - Spinner background is not correct on Android 6.0+ 片段交易动画无法在Android 6.0+中运行 - Fragment Transaction Animation not Working in Android 6.0+ 仅在android 6.0+上找不到类 - Class not found only on android 6.0+ Android 6.0+: java.lang.UnsupportedOperationException: 不支持,使用 MenuItemCompat.setOnActionExpandListener() - Android 6.0+: java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener() 如何在Android 6.0下使用Java 8 Stream API - How to use Java 8 Stream API under Android 6.0 动态链接(Android 应用链接)不提示“打开方式”Android 6.0+ - Dynamic Links (Android App Links) not to prompt "open with" Android 6.0+ Pixel,Allo和Android 6.0+设备在Google发布日期上的操作? - Actions on Google release date for Pixel, Allo and Android 6.0+ devices?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM