在TabHost中按下按钮时Android启用Tabs

时间:2014-02-12 14:11:38

标签: android tabs

我正在使用带有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;
        }
    });

我希望在列表上长按时启用下一个标签。

提前致谢

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找这个:

TabHost th = (TabHost) getView().findViewById(android.R.id.tabhost);

当您使用Fragment时,您无法直接致电findViewById(),因此您必须在使用View获得的根getView()上进行此操作。

要将当前标签更改为特定标签,您可以使用以下内容:

th.setCurrentTab(th.getTabWidget().getChildCount() - 1);
例如,这将激活tabhost中的最后一个选项卡。