android如何将相同的片段添加到不同的活动中

huangapple 未分类评论47阅读模式
英文:

android how to add same fragments with different activities

问题

   活动 A

      SectionPagerAdapter pageradapter = new SectionPagerAdapter(getSupportFragmentManager());
                    pageradapter.addFragment(ContactsFragment.newInstance(), "PHONE CONTACTS");
                    pageradapter.addFragment(CustomersFragment.newInstance(), "CUSTOMERS");
                   viewPager.setAdapter(pageradapter);

活动 B

 

     SectionPagerAdapter pageradapter = new SectionPagerAdapter(getSupportFragmentManager());
                        pageradapter.addFragment(ContactsFragment.newInstance(), "PHONE CONTACTS");
                        pageradapter.addFragment(CustomersFragment.newInstance(), "CUSTOMERS");
                       viewPager.setAdapter(pageradapter);

我在我的安卓应用程序中使用了片段fragments和视图翻页器viewpager)。在活动 A 中我已经添加了一个带有视图翻页器的片段它正常运行现在的问题是我也想在活动 B 中使用同样的片段

注意当我将相同的片段添加到视图翻页器中时会抛出如下错误
```console
java.lang.ClassCastException: app.com.Contacts.ContactsActivity无法转换为app.com.Contacts.Activity.CustomersActivity
英文:

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);

I am using fragments and viewpager in my android application.In activity A i have added one fragment with viewpager it is working fine.Now the issue is i want to use the same fragment in Activity B also.

Note: when i add the same fragment in viewpager its throwing error like

java.lang.ClassCastException: app.com.Contacts.ContactsActivity cannot be cast to app.com.Contacts.Activity.CustomersActivity

答案1

得分: 0

在您的 Fragment 代码中,您将活动转换为 ContactsActivity。这就是为什么您无法重新使用它。因此,您必须从 Fragment 代码中删除此转换。

如果您想调用附加到 FragmentActivity 函数,您可以使用接口来实现。如果您的活动实现了相同的接口,那么在 Fragment 代码中将活动转换为接口即可。

class FragmentA {
   private void myMethod() {
      ((MyInterface)getActivity()).callMethodOnActivity();
   }
}
英文:

In your Fragment's code you cast the activity to ContactsActivity. This is why you can not reuse it. So, you have to remove this cast from your Fragment's code.

If you would like to call an Activity function which the Fragment is attached. You can do it with interfaces. If your activities implements the same interface. It is enough to cast the Activity to the interface in your Fragment's code.

class FragmentA {
   private void myMehod() {
      ((MyInterface)getActivity()).callMethodOnActivity()
   }
}

huangapple
  • 本文由 发表于 2020年4月10日 12:50:43
  • 转载请务必保留本文链接:https://java.coder-hub.com/61134221.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定