java - android 如何添加具有不同 Activity 的相同 fragment

标签 java android android-fragments

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 的代码中删除此转换。

如果您想调用附加了FragmentActivity函数。您可以使用接口(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/

相关文章:

java - 在操作中设置内容类型

android - 在回调 viewpager fragment on back press 时出现此错误您必须先在 child 的 parent 上调用 removeView()

java - 如何将任何 Activity 或 fragment 的数据绑定(bind)对象传递给方法参数而不需要强制转换?

android - 在 onCreateView() fragment 中设置动态布局

java - Spring boot - 如何获取运行端口和ip地址

java - 使用 PowerMockito 类的所有实例的模拟方法

java - 如何将 String 转换为 at switch 语句的枚举?

java - 以编程方式关闭屏幕

android - android中只显示状态栏?

android-fragments - 另一个 "update on popbackstack"主题