簡體   English   中英

如何在Android 6.0+下使用TabHost

[英]How to use TabHost under android 6.0+

好的,我認為使用TabHost在我的小應用程序中會很好。 但是,在Android 6.0+下,不推薦使用TabActivity和其他幾個功能。 所以我寫了這個:

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....}}

當我運行此代碼時,IDE會拋出RuntimtException:“ java.lang.IllegalStateException:您是否忘了調用'public void setup(LocalActivityManager activityGroup)'?” 我發現ActivityGroup也已棄用。 我應該如何繞過呢?

嘗試這個

<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" />

在你的活動中

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);

方法是

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。

這是我通過小時數在帶有Fragements的Android Android選項卡上搜索找到的答案。 我認為這是一個可行的解決方案。

ViewPage和TabLayout位於android.support軟件包中,這意味着它們支持向后版本,這就是我選擇不使用它的主要原因。 甚至很難研究新版本的android,甚至更難制作向后兼容的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM