【问题标题】:Delegate click View click event to Activity将点击查看点击事件委托给Activity
【发布时间】:2014-05-06 19:22:01
【问题描述】:

这是一个 Android 设计模式问题。我想将 View 的所有单击事件处理委托给包含 View 的 Activity。这是结构:

根Activity包含一个ListFragment,ListFragment包含一个自定义的WebView,我需要调用一个函数

public void handleClick() {}

当用户单击 WebView 主体上的链接时,在根 Activity 中。我不确定如何在 WebView 中获取对根 Activity 的引用。

这是我的想法:在 ListFragment 中我可以做到

((MainActivity) getActivity()).handleClick();

这意味着自定义的 WebView 应该有对 Fragment 的引用。

但是,我不喜欢引用片段的想法。首先是因为自定义的 WebView 不一定是 ListFragment 的子项。持有对父 Fragment 的引用是没有意义的。第二件事是持有对 Fragment 的引用导致内存泄漏(我不确定)。

那么如何从 WebView 调用 MainActivity 中的方法。

【问题讨论】:

    标签: android design-patterns android-fragments


    【解决方案1】:

    为什么不将您的自定义 webView 编码为 MainActivity 中的内部类? 这样您就可以访问 MainActivity 中的 handleClick。 http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html

    或者添加一个自定义的 HandleClickListener(带有 handleClick 方法)到 webViews 构造器和 在 MainActivity 中实现 HandleClickListener

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      相关资源
      最近更新 更多