Я создал интерфейс в общем классе. Я вызвал функцию интерфейса в Activity. Я хочу реализовать интерфейсный метод во фрагменте.
это интерфейс в Utility.java
public interface CloseMenu{
public void closemenu(View view);
}
Вот как я называю этот интерфейс в Activity: объявление:
public Utility.CloseMenu closeMenu;
инициализация на создание:
closeMenu= (Utility.CloseMenu) this;
интерфейс вызова:
closeMenu.closemenu(view);
в классе фрагмента я реализовал этот интерфейс:
@Override
public void closemenu(View view) {
view=mLoginFragmentView;
slideDown(view);
}
Но я получаю сбой как:
java.lang.RuntimeException: Невозможно запустить действие. ComponentInfo {com.zinedroid.hospitalmanagement/com.zinedroid.hospitalmanagement.Activity.HomeActivity}: java.lang.ClassCastException: com.zinedroid.hospitalmanagement.Activity.HomeActivity не может быть приведен к com. zinedroid.hospitalmanagement.Common.Utility $ CloseMenu
Кто-нибудь может мне помочь, пожалуйста?
Я решил проблему. Closemenu должен быть инициализирован в onAttach фрагмента, который реализует фрагмент.
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
activity = getActivity();
((HomeActivity)activity).closeMenu = this;
}