我用TabHost创建了一个tab容器,布局xml文件如下所示:
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="60dip" >
<fragment
android:id="@+id/tab1"
android:name="com.test.Tab1Fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment
android:id="@+id/tab5"
android:name="com.test.Tab5Fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</TabHost>
在MainActivity中,我初始化并在onCreate
回调中将标签添加到活动中,
tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost.setup();
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(mRes.getString(R.string.tab1)).setContent(R.id.tab1));
tabHost.addTab(tabHost.newTabSpec("tab5").setIndicator(mRes.getString(R.string.tab5)).setContent(R.id.tab5));
在更改的选项卡上,我想找到当前片段,并在显示当前片段时执行一些初始化。
private OnTabChangeListener tabChangedListener = new OnTabChangeListener() {
public void onTabChanged(String tabid) {
Log.d(TAG, "tab changed " + tabid);
currentTab = tabid;
TabChangeCallback currentFragment = (TabChangeCallback) getFragmentManager().findFragmentByTag(currentTab);
if(currentFragment != null) {
currentFragment.onTabChanged(currentTabIndex);
} else {
Log.d(TAG, "get fragment null ");
}
}
};
问题是为什么getFragmentManager().findFragmentByTag(currentTab)
返回null,我无法调用片段init代码。谢谢你的帮助。