android как добавить одинаковые фрагменты с разными действиями - PullRequest
0 голосов
/ 10 апреля 2020

Активность 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);

Я использую фрагменты и viewpager в своем приложении android. В активности A я добавил один фрагмент с viewpager работает нормально. Теперь проблема в том, что я хочу использовать тот же фрагмент в действии B.

Примечание: когда я добавляю тот же фрагмент в viewpager, его ошибка выдает, как

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

1 Ответ

0 голосов
/ 10 апреля 2020

В вашем Fragment коде вы переводите действие в ContactsActivity. Вот почему вы не можете использовать его повторно. Итак, вы должны удалить это приведение из кода Fragment.

Если вы хотите вызвать функцию Activity, к которой прикреплен Fragment. Вы можете сделать это с помощью интерфейсов. Если ваша деятельность реализует тот же интерфейс. Достаточно привести Activity к интерфейсу в коде Fragment.

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