英文:
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
代码中删除此转换。
如果您想调用附加到 Fragment
的 Activity
函数,您可以使用接口来实现。如果您的活动实现了相同的接口,那么在 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()
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论