0
메신저 탭 3 개가있는 탭 호스트 사용. 첫 번째 항목 만 활성화됩니다. 그래서 액티비티를 시작할 때 첫 번째 탭 조각을 볼 수 있습니다. 거기에있는 목록을 누르거나이 예제의 버튼을 사용하게하려면 tabhost에서 다음 탭을 사용 가능하게 설정하고 싶습니다. Tabhost를 어떻게 얻을 수 있습니까? 내가 생각할 수있는 유일한 방법은 브로드 캐스트이지만이 작업을 수행하는 더러운 방식이라고 느낍니다.Android에서 TabHost의 버튼 누르기 탭 사용
여기 tabhost 내 Parrent 클래스입니다 :
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;
}
이 내 첫 아이 탭입니다 :
목록에 Longclicking 때 내가 다음 탭을 사용하려면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;
}
});
.
TabHost th = (TabHost) getView().findViewById(android.R.id.tabhost);
당신이, 당신이 직접 루트 View
에 그것을 할 findViewById()
을 그래서 당신은 한 호출 할 수 없습니다 Fragment
의를 사용하는 것처럼 : 사전에
덕분에
흠 빠르게 대답 해 주셔서 감사합니다. 내 onActivitycreated 줄을 넣었어요하지만 호출 할 때 nullpointer 예외가 th.getTabWidget(). getChildAt (1) .setEnabled (true); 그는 tabhost를 찾을 수 없기 때문에. –
getChildAt (1) 대신'getChildTabViewAt (1)'을 사용하십시오. TabHost는 일부 이름이 매우 까다로울 수 있습니다 ... – nKn
좋아, 해결 했어. 첫 번째 문제는 FragmentTabHost를 사용하는 인스턴트 메신저이고 두 번째는 getParentFragment(). getView()를 사용해야한다는 것입니다. 하지만 고맙다 당신이 나를 많이 도왔 :) –