Stworzyłem interfejs we wspólnej klasie. Mam wywołanie funkcji interfejsu w Activity.I chcę zaimplementować metodę interfejsu we fragmentach.

To jest interfejs w Utility.java

 public interface CloseMenu{
    public void closemenu(View view);
}

Tak nazywam ten interfejs w Activity: deklaracja:

 public Utility.CloseMenu closeMenu;

Inicjalizacja onCreate:

  closeMenu= (Utility.CloseMenu) this;

Wywołanie interfejsu:

closeMenu.closemenu(view);

W klasie fragmentów zaimplementowałem ten interfejs:

 @Override
    public void closemenu(View view) {
    view=mLoginFragmentView;
    slideDown(view);
   }

Ale mam awarię, ponieważ:

java.lang.RuntimeException: Nie można rozpocząć aktywności ComponentInfo{com.zinedroid.hospitalmanagement/com.zinedroid.hospitalmanagement.Activity.HomeActivity}: java.lang.ClassCastException: com.zinedroid.hospitalmanagement.Activity.HomeActivity nie można przesłać do com. zinedroid.hospitalmanagement.Common.Utility$CloseMenu

Czy ktoś może mi pomóc?

1
anju jo 9 listopad 2018, 10:31

1 odpowiedź

Najlepsza odpowiedź

Rozwiązałem problem.closemenu należy zainicjować w onAttach fragmentu, który implementuje fragment.

 @Override
public void onAttach(Activity activity){
    super.onAttach(activity);
    activity = getActivity();

    ((HomeActivity)activity).closeMenu = this;
}
2
anju jo 9 listopad 2018, 13:29