我正在尝试从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。
答案 0 :(得分:1)
您不应该为getFragmentById()提供布局文件ID。您应该使用布局文件中声明的片段的实际ID(即xml中片段的android:id属性指定的ID)。
无论如何,访问viewPager片段的正确方法是通过它的PageAdapter,而不是直接通过FragmentManager。它可能会使用您的方法,但它不能保证,也不安全。