繁体   English   中英

从Android中的FragmentActivity类访问Fragment类方法

[英]Access Fragment Class Method From FragmentActivity Class in Android

我正在尝试从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)及其布局的Fragment-> selection_fragment.xml,其中包含,标签等。


在MainActivity类中,我尝试运行以下代码:

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.xml中没有片段/ fragment标签,而我只有/android.support.v4.view.ViewPager。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM