如何在片段中添加tabhost

soh*_*hil 8 android android-layout

我想在片段中添加tabhost,但无论我尝试什么,我都无法插入它.我可能会遗漏一些基础知识.这是我的班级TabFragment的代码.返回一个视图.

public class TabFragment extends Fragment{  

    public void onCreate(Bundle savedInstanceState)
    {
       super.onCreate(savedInstanceState);
    }
    private TabHost mTabHost;
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 
    {
          View view = inflater.inflate(R.layout.tabmain, container, false);
          mTabHost = (TabHost) view.findViewById(android.R.id.tabhost);
          mTabHost.setup();//very important to call this
          TabHost.TabSpec tab = mTabHost.newTabSpec("my tab content");
          tab.setIndicator("my tab content");
          mTabHost.addTab(tab);
      return view;
    }
}
Run Code Online (Sandbox Code Playgroud)

jam*_*s0n 18

使用API​​级别17,现在可以:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

// This class is the 3rd fragment in my ViewPager, 
// to which I wanted to add 2 tabs....
public class TabHostParentFragment extends Fragment {
private FragmentTabHost mTabHost;

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

Bundle arg1 = new Bundle();
arg1.putInt("Arg for Frag1", 1);
mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("Frag Tab1"),
    MyNestedFragment1.class, arg1);

Bundle arg2 = new Bundle();
arg2.putInt("Arg for Frag2", 2);
mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("Frag Tab2"),
    MyNestedFragment2.class, arg2);

return mTabHost;
}

@Override
public void onDestroyView() {
super.onDestroyView();
mTabHost = null;
}
}
Run Code Online (Sandbox Code Playgroud)

确保你更新你的android-support-v4.jar文件,因为当我通过SDK管理器下载时它没有为我自动更新.这可以防止getChildFragmentManger()定义函数.