【问题标题】:Interface is not calling in fragment接口未在片段中调用
【发布时间】:2019-04-12 18:31:24
【问题描述】:

我在一个公共类中创建了一个接口。我在Activity中调用了interface函数,我想在fragment中实现interface方法。

这是 Utility.java 中的接口

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

这就是我在 Activity 中调用此接口的方式: 声明:

 public Utility.CloseMenu closeMenu;

初始化onCreate:

  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

谁能帮帮我?

【问题讨论】:

  • 我添加了android标签来吸引熟练的用户。只谈论“界面”可能意味着很多语言。
  • 谢谢。但是你能帮我解决这个问题吗?
  • 您在活动中使用this - 这是活动本身。它似乎没有实现CloseMenu 接口。您可能希望将 closeMenu 字段设置为实现接口的 Fragment 的适当实例?
  • 你是通过Activity来实现接口的吗?
  • @Reza 我在fargment中实现接口,但是在Activity中调用接口实例

标签: android interface fragment


【解决方案1】:

我已经解决了这个问题。closemenu 应该在实现片段的片段的 onAttach 中初始化。

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

    ((HomeActivity)activity).closeMenu = this;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 2019-02-06
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2014-01-20
    • 2015-12-12
    • 2021-10-19
    相关资源
    最近更新 更多