Activity A
SectionPagerAdapter pageradapter = new SectionPagerAdapter(getSupportFragmentManager());
pageradapter.addFragment(ContactsFragment.newInstance(), "PHONE CONTACTS");
pageradapter.addFragment(CustomersFragment.newInstance(), "CUSTOMERS");
viewPager.setAdapter(pageradapter);
Activity B
SectionPagerAdapter pageradapter = new SectionPagerAdapter(getSupportFragmentManager());
pageradapter.addFragment(ContactsFragment.newInstance(), "PHONE CONTACTS");
pageradapter.addFragment(CustomersFragment.newInstance(), "CUSTOMERS");
viewPager.setAdapter(pageradapter);
我在我的 android 应用程序中使用 fragment 和 viewpager。在 Activity A 中,我添加了一个带有 viewpager 的 fragment ,它工作正常。现在的问题是我想在 Activity B 中也使用相同的 fragment 。
注意:当我在 viewpager 中添加相同的 fragment 时,它会抛出错误,如
java.lang.ClassCastException: app.com.Contacts.ContactsActivity cannot be cast to app.com.Contacts.Activity.CustomersActivity
最佳答案
在 Fragment
的代码中,您将 Activity 转换为 ContactsActivity
。这就是为什么你不能重复使用它。因此,您必须从 Fragment
的代码中删除此转换。
如果您想调用附加了Fragment
的Activity
函数。您可以使用接口(interface)来做到这一点。如果您的 Activity 实现相同的接口(interface)。将 Activity
转换为 Fragment
代码中的接口(interface)就足够了。
class FragmentA {
private void myMehod() {
((MyInterface)getActivity()).callMethodOnActivity()
}
}
关于java - android 如何添加具有不同 Activity 的相同 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61134221/