如何添加tabhost的片段片段、tabhost

2023-09-13 01:11:06 作者:无名指dē约定

我试图添加tabhost片段内,但无论我怎么努力我不能够将其插入。我可能会丢失了我的课TabFragment一些基本面here.Here code。它返回一个视图。

 公共类TabFragment扩展片段{

    公共无效的onCreate(包savedInstanceState)
    {
       super.onCreate(savedInstanceState);
    }
    私人TabHost mTab​​Host;
    公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
        捆绑savedInstanceState)
    {
          查看查看= inflater.inflate(R.layout.tabmain,集装箱,假);
          mTabHost =(TabHost)view.findViewById(android.R.id.tabhost);
          mTabHost.setup(); //非常重要调用此
          TabHost.TabSpec标签= mTab​​Host.newTabSpec(我的选项卡内容);
          tab.setIndicator(我的选项卡内容);
          mTabHost.addTab(标签);
      返回查看;
    }
}
 

解决方案

通过API级别17,这是现在可能的:

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

//这个类是在我ViewPager第三片段,
//而我想补充2个选项卡....
公共类TabHostParentFragment扩展片段{
私人FragmentTabHost mTab​​Host;

@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
mTabHost =新FragmentTabHost(getActivity());
mTabHost.setup(getActivity(),getChildFragmentManager(),R.layout.my_parent_fragment);

捆绑ARG1 =新包();
arg1.putInt(精氨酸为Frag1,1);
mTabHost.addTab(mTabHost.newTabSpec(TAB1)。setIndicator(破片TAB1),
    MyNestedFragment1.class,ARG1);

捆绑ARG2 =新包();
arg2.putInt(精氨酸为Frag2,2);
mTabHost.addTab(mTabHost.newTabSpec(TAB2)。setIndicator(破片TAB2),
    MyNestedFragment2.class,ARG2);

返回mTabHost;
}

@覆盖
公共无效onDestroyView(){
super.onDestroyView();
mTabHost = NULL;
}
}
 
Android Tabhost选项卡

请确保您更新的Andr​​oid支持-v4.jar文件,因为它没有自动更新我,当我通过SDK管理器中下载。这$ P $被定义pvents的 getChildFragmentManger()的功能。

i am trying to add tabhost inside a fragment but no matter what i try i am not able to insert it. I might be missing some fundamentals here.Here code of my class TabFragment. Which returns a view.

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

解决方案

With API level 17, this is now possible:

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

Make sure you update your android-support-v4.jar file, as it didnt auto update for me when I downloaded through the SDK manager. This prevents the getChildFragmentManger() function from being defined.