Java Tabhost中的Get片段为null
我用TabHost制作了一个选项卡容器,布局xml文件如下:Java Tabhost中的Get片段为null,java,android,android-fragments,android-tabhost,Java,Android,Android Fragments,Android Tabhost,我用TabHost制作了一个选项卡容器,布局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_widt
<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>
在更改的选项卡上,我想找到当前片段,并在显示当前片段时进行初始化
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,而我无法调用片段初始化代码。谢谢您的帮助。我认为如果您只处理Tabhost中的片段,那么您最好使用。它将更加优化和简单
通过标记获取子片段-这个问题是因为在调用OnTabChnaged时fragemnt尚未创建。
谢谢,在你的帮助下,我解决了这个问题。这对meGlad很有用,这很有帮助。快乐的编码。有同样的问题。在onTabChanged()中执行该操作,片段frgmt=getChildFragmentManager().findFragmentByTag(tabTag);返回null。你能发布你的工作解决方案吗?谢谢
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 ");
}
}
};