我已经创建了一个选项卡活动,显示了在xml字符串数组中定义的多个选项卡。每个选项卡都具有与使用不同数据更新的内容相同的列表视图。 每次单击某个选项卡时,我都可以看到我的选项卡和内容,但第一个选项卡(创建活动时)从不显示。为什么我的第一个标签不显示?
我可以在我的日志中看到onCreate执行时调用onTabChanged,但结果不显示。如果我更改选定的选项卡并返回到第一个,我可以看到它。
这是我的代码:
public class MyActivity extends TabActivity {
protected final void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LOGGER.debug("onCreate.start");
setContentView(R.layout.mylayout);
listview = (ListView) findViewById(R.id.listview);
adapter = new MyAdapter(getApplicationContext(), new ArrayList<Station>());
listview.setAdapter(adapter);
final Resources res = getResources();
final TabHost tabHost = getTabHost();
tabHost.setOnTabChangedListener(new OnTabChangeListener(
(MyApplication) getApplicationContext()));
TabHost.TabSpec spec;
final String[] tabsString = res.getStringArray(R.array.tabs);
for (int i = 0; i < tabsString.length; i++) {
final String[] tab = tabsString[i].split("\\|");
spec = tabHost.newTabSpec(tab[0]).setIndicator(tab[1]);
spec.setContent(R.id.tabcontent);
tabHost.addTab(spec);
tabHost.getTabWidget().getChildAt(i).getLayoutParams().width = TAB_WIDTH;
}
LOGGER.debug("onCreate.end");
}
public void onTabChanged(final String tabId) {
LOGGER.debug("onTabChanged.start");
refreshTask = new AsyncTask<Void, Void, List<Station>>() {
@Override
protected void onPreExecute() {
/* Show progress bar and hide list view. */
findViewById(R.id.loading).setVisibility(View.VISIBLE);
findViewById(R.id.listview).setVisibility(View.GONE);
};
@Override
protected List<Station> doInBackground(final Void... params) {
return getStations(0, 0, tabId);
}
@Override
protected void onPostExecute(final List<Station> result) {
if (result != null) {
adapter.setStations(result);
} else {
adapter.clear();
}
adapter.notifyDataSetChanged();
/* Hide progress bar and show list view. */
findViewById(R.id.loading).setVisibility(View.GONE);
findViewById(R.id.listview).setVisibility(View.VISIBLE);
}
};
refreshTask.execute();
LOGGER.debug("onTabChanged.end");
}
}
这是日志我可以在logcat的控制台中看到:
MyActivity onCreate.start
MyActivity onTabChanged.start
MyActivity onTabChanged.end
MyActivity onCreate.end
你有一个想法? 感谢
我已经尝试过,它不会改变。事实上,第一个标签已被默认选中。 – orgoz