我正在使用带有3个标签的Tabhost。仅启用第一个。所以当你开始活动时,你会看到第一个标签片段。当按下那里的列表或让我们按下这个例子的按钮时,我想设置tabhost中的下一个选项卡来启用。我如何获得Tabhost? 我能想到的唯一方法是Broastcast,但这感觉就像是一种肮脏的方式。
这是我的parrent类,其中包含tabhost:
public class Tourenuebersicht_fragment extends Fragment {
private FragmentTabHost mTabHost;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_touren_uebersicht_fragment,
container, false);
mTabHost = new FragmentTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.tourenrealtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator(getResources().getString(R.string.routes)),
Routen_fragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator(getResources().getString(R.string.stops)),
Tourstop_fragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator(getResources().getString(R.string.tasks)),
TourstopAuftrag_fragment.class, null);
mTabHost.getTabWidget().getChildTabViewAt(1).setBackgroundColor(Color.LTGRAY);
mTabHost.getTabWidget().getChildTabViewAt(1).setEnabled(false);
mTabHost.getTabWidget().getChildTabViewAt(2).setBackgroundColor(Color.LTGRAY);
mTabHost.getTabWidget().getChildTabViewAt(2).setEnabled(false);
return mTabHost;
}
这是我的第一个子标签:
public class Routen_fragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_routen_fragment,
container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
ListView touren = (ListView) getView().findViewById(R.id.tourenListe);
touren.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
final Dialog dialog = new Dialog(getActivity());
dialog.setContentView(R.layout.dialog_tour_details);
dialog.setTitle("Tour Details");
dialog.setCanceledOnTouchOutside(true);
dialog.setCancelable(true);
});
touren.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
return false;
}
});
我希望在列表上长按时启用下一个标签。
提前致谢
答案 0 :(得分:0)
我认为你正在寻找这个:
TabHost th = (TabHost) getView().findViewById(android.R.id.tabhost);
当您使用Fragment
时,您无法直接致电findViewById()
,因此您必须在使用View
获得的根getView()
上进行此操作。
要将当前标签更改为特定标签,您可以使用以下内容:
th.setCurrentTab(th.getTabWidget().getChildCount() - 1);
例如,这将激活tabhost中的最后一个选项卡。