从Android中的FragmentActivity类访问片段类方法

时间:2014-05-24 15:52:36

标签: java android xml android-layout android-fragments

我正在尝试从FragmentActivity类实现访问Fragment方法,并在Fragment Layout中更改一些TextView。

我的MainActivity扩展了FragmentActivty(v4)及其布局 - > activity_main.xml中:

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
                                   android:id="@+id/viewPager"
                                   android:layout_width="match_parent"
                                   android:layout_height="match_parent">
</android.support.v4.view.ViewPager>

SelectionFragment类扩展具有updateLoadMembersData()方法(v4)及其布局的片段 - &gt; selection_fragment.xml 包含,标签等。


在MainActivity Class中,我试着运行这段代码:

protected void onResume() {
        super.onResume();

            viewPager.setCurrentItem(0);
            SelectionFragment instanceFragment = (SelectionFragment) getSupportFragmentManager().findFragmentById(R.layout.selection_fragment);
            instanceFragment.updateLoadMembersData();
            Toast.makeText(this, "Saved Data Succesfully Added!", Toast.LENGTH_LONG);


    }


instanceFragment.updateLoadMembersData();

此方法尝试更改一些textViews editTexts等我无法运行此方法。

但是我遇到了像ClassCastException这样的错误,我看起来像这样的问题,但找不到合理的解决方案。我没有片段/片段标签,我只在activity_main中有/android.support.v4.view.ViewPager。 XML。

1 个答案:

答案 0 :(得分:1)

您不应该为getFragmentById()提供布局文件ID。您应该使用布局文件中声明的片段的实际ID(即xml中片段的android:id属性指定的ID)。

无论如何,访问viewPager片段的正确方法是通过它的PageAdapter,而不是直接通过FragmentManager。它可能会使用您的方法,但它不能保证,也不安全。