如何将数据从活动传递到TabHost中的片段?

时间:2017-03-29 10:53:05

标签: android android-studio android-fragments android-tabhost

我有一个像这样划分的页面:有#34; Main"包含片段的布局

<fragment
    android:name="com.x.x.FirstFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/firstFragment"
    tools:layout="@layout/first_fragment" />

在外部布局中的片段中,我创建了一个像这样的TabHost:

<TabHost
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/tabHost">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="visible" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <fragment
                android:id="@+id/first"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:name="com.x.x.First"
                tools:layout="@layout/first" />

            <fragment
                android:id="@+id/second"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:name="com.x.x.Second"
                tools:layout="@layout/second" />

        </FrameLayout>
    </LinearLayout>
</TabHost>

问题是我需要在&#34; First&#34;内部运行一个方法。当一个按钮进入&#34; Main&#34;已点击课程。

我从昨天开始就一直在努力解决这个问题,有什么办法吗?

谢谢。

3 个答案:

答案 0 :(得分:0)

只需使用此代码,即可从Main.class调用First.class的方法。 在Main.class中

new First.method();

答案 1 :(得分:0)

您应该在First片段中定义一个公共方法,并在MainACtivity上的按钮时调用。如果要更新某个片段的UI元素,请注意当前显示的片段。

看看Fragments developer guide

  

同样,您的活动可以通过使用findFragmentById()或findFragmentByTag()从FragmentManager获取对Fragment的引用来调用片段中的方法。

答案 2 :(得分:0)

从您的Activity中获取Fragment并调用方法。

Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.first);
if(fragment != null){    
  ((First)fragment).yourMethod();
}