0

에 TabHost에 표시되지, 나는 내가 TabHost없이 제대로 표시하는 ExpandableListView 얻을 수 있지만 추가하면 할 수있는 FragmentExpandableListView이 조각

에서로드되고있는 TabHost의 내부에 ExpandableListViewTabHost이 표시되지 않습니다.

탭을 변경하면 목록이 표시되지만 처음보기로드시에는 ExpandableListView이 표시되지 않습니다.

여기에 코드입니다 : 탭을 전환 할 때

public class Categories extends Fragment { 

    SearchView searchView; //Not doing anything yet 
    LayoutInflater inflater; 

    ExpandableListView expandableListView; 

    TabHost tabHost; 

    private ArrayList<String> parentItems = new ArrayList<String>(); 
    private ArrayList<Object> childTitles = new ArrayList<Object>(); 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
    { 
     LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.categories_tabs, null); 
     searchView = (SearchView) layout.findViewById(R.id.searchView); 
     this.inflater = inflater; 

     tabHost = (TabHost) layout.findViewById(R.id.tabhost); // The activity TabHost 
     tabHost.setup(); 

     TabHost.TabSpec spec; // Reusable TabSpec for each intent; 

     try 
     { 
      //setup tab name, display text, and layout 
      spec = tabHost.newTabSpec(getResources().getString(R.string.events)) 
       .setIndicator(" " + getResources().getString(R.string.events) + " ") 
       .setContent(R.id.categoriesLayout); //must be id, not layout or xml 

      //add tab 
      tabHost.addTab(spec); 

      spec = tabHost.newTabSpec(getResources().getString(R.string.venues)) 
       .setIndicator(" " + getResources().getString(R.string.venues) + " ") 
       .setContent(R.id.categoriesLayout); //must be id, not layout or xml 


      tabHost.addTab(spec); 

      //finish adding tabs 
      tabHost.getTabWidget(); 
     } 
     catch(Exception e) 
     { 
      Log.v(getActivity().getResources().getString(R.string.app_name), "Failed to load tab host"); 
     } 

     tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() 
     { 
      @Override 
      public void onTabChanged(String s) 
      { 
       displayTab(); 
      } 
     }); 

     return layout; 
    } 

    private void displayTab() 
    { 
     //set parentItems - not shown 
     setGroupParents(); 

     //set childTitles - not shown 
     setChildData(); 


     MyExpandableAdapter adapter = new MyExpandableAdapter(parentItems, childTitles, childDescriptions); 
     adapter.setInflater(inflater, getActivity()); 
     expandableListView.setAdapter(adapter); 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) 
    { 
     super.onViewCreated(view, savedInstanceState); 

     expandableListView = (ExpandableListView) view.findViewById(R.id.list); 

     displayTab(); 
    } 

displayTab 기능을 실행하면 ExpandableListView을 보여 주지만, 나는 화면을로드 즉시 목록을 표시해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내 onStart()ExpandableListView 쇼에

tabHost.setCurrentTab(1); 
tabHost.setCurrentTab(0); 

를 넣어 경우

부칙

OK, 그래서 지금은 정말 ... 혼동하고있어,하지만 난 그냥

displayTab(); 
를 넣어 경우

여기에 표시되지 않습니다. OnTabChangeListener이 수행하는 모든 작업은 실행 중입니다. displayTab ...

답변

0

뷰가 생성 된 후에 ExpendableListView에서 작업하면 onCreateView에서 작업 할 수 있습니다. DisplayTab()에서 어댑터의 notifyDataSetChanged를 호출하는 것으로 충분할 수 있습니다.

또는 코드를 적절한 콜백으로 이동할 수 있습니다.

그 나던 도움, 어댑터 코드를 표시하는 경우

하십시오

그래서 탭을 명시 적으로 displayTab를 호출되어 있다고한다 변경된 경우 어떻게되는지. 처음 초기화 할 때 메소드가 호출되도록 했습니까? 그리고 나는 그걸 확인했다는 뜻인가요? sysout (실행 중)과 같은가?

+0

뷰가 생성 된 후에 뷰가 생성되기 전에 액티비티가 생성 된 후에'ExpandableListView'에 대한 작업을 시도해 보았습니다 ... 아무 것도 동작하지 않는 것 같습니다. 또한'notifyDataSetChanged'를 호출 해 보았습니다. 행운을 빈다 :-( – Randy

+0

메소드가 실행 중이며 변수가 설정되어 있는지 확인했습니다. 어댑터가 필요한 정보를 얻고 있고,'ExpandableListView '... 모든 일이 일어나고 있지만 목록보기는 조각의 초기로드에 표시되지 않습니다. – Randy

+0

원래 질문에 더 많은 정보를 추가했습니다. – Randy