Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tabhost中的Get片段为null_Java_Android_Android Fragments_Android Tabhost - Fatal编程技术网

Java Tabhost中的Get片段为null

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制作了一个选项卡容器,布局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>
在更改的选项卡上,我想找到当前片段,并在显示当前片段时进行初始化

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 ");
            }   
        }
    };