如何在片段中使用tabhost和tabwidget?

时间:2016-09-23 20:06:50

标签: java android android-studio android-fragments

我想在片段中使用tabhost和tabwidget,从左到右滑动,反之亦然。 我只有一个Activity(对于容器我使用FrameLayout)和抽屉导航,导航抽屉有5个项目链接5个片段。在其中2个片段中,我想使用带有良好动画的滑动选项卡(如在Activity中)。 目前,标签看起来不太好,我无法自定义它们。 这是我对碎片的认识:

公共类MainActivity扩展了AppCompatActivity

    implements NavigationView.OnNavigationItemSelectedListener {


public boolean onNavigationItemSelected(MenuItem item) {

    int id = item.getItemId();

    Fragment fragment = null;

    if (id == R.id.nav_feed) {

        fragment = new FeedFragment();

    } else if (id == R.id.nav_file) {
        fragment = new FileFragment();

    } else if (id == R.id.nav_image) {
        fragment = new ImageFragment();

    } else if (id == R.id.nav_settings) {
        fragment = new SettingsFragment();

    } else if (id == R.id.nav_share) {
        fragment = new ShareFragment();

    }

    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);

    }
    return true;
}

这里是我的片段,我想用刷子使用标签:

public class FeedFragment extends Fragment {
private FragmentTabHost mTabHost;

public FeedFragment() {
    setHasOptionsMenu(true);
}

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

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mTabHost = new FragmentTabHost(getActivity());
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.fragment_feed);

    Bundle arg1 = new Bundle();
    arg1.putInt("arg for News", 1);
    mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("News"),
            FeedNewsFragment.class, arg1);

    Bundle arg2 = new Bundle();
    arg2.putInt("arg for My", 2);
    mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("My"),
            FeedMyFragment.class, arg2);

    return mTabHost;
@Override
public void onDestroyView() {
    super.onDestroyView();
    mTabHost = null;
}

它工作但我不能使用滑动。

我是java的新手,这是我的第一个项目,所以请耐心等待。

0 个答案:

没有答案