正如标题所说,我有一个ExpandableListView
它正在从Fragment
ExpandableListView在TabHost没有出现在片段
加载TabHost
里面我可以得到ExpandableListView
到没有TabHost
正常显示,但一旦我加入它没有显示TabHost
。
我也得到了它,所以当我更改标签时,列表将显示,但初始加载视图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
切换标签的时候,但我需要它在加载屏幕上立即显示列表。我究竟做错了什么?
附录
好了,现在我真的很困惑......如果我把
tabHost.setCurrentTab(1);
tabHost.setCurrentTab(0);
在我onStart()
的ExpandableListView
节目,但如果我只是把
displayTab();
在那里,它不显示。所有的OnTabChangeListener
正在运行displayTab
...
我已经尝试在创建视图之前,在创建视图之后,在创建活动之后,对'ExpandableListView'做的工作......似乎没有任何工作。 此外,我试着调用'notifyDataSetChanged',没有运气:-( – Randy
我验证了方法正在运行,并且正在设置变量。适配器正在获取它所需的信息,并且正在设置为'ExpandableListView '...一切都在发生,因为它应该,但列表视图永远不会显示在片段的初始加载中 – Randy
我向原始问题添加了更多信息 – Randy