[英]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.