这是一个Android设计模式问题。我想将View的所有单击事件处理委托给包含View的Activity。结构如下:
根Activity包含一个ListFragment,ListFragment包含一个自定义的WebView,我需要调用一个函数
public void handleClick() {}
当用户单击WebView正文上的链接时,在根Activity中。我不确定如何在WebView中获取对根Activity的引用。
以下是我的想法:在ListFragment中,我可以做到
((MainActivity) getActivity()).handleClick();
这意味着自定义WebView应该引用片段。
但是,我不喜欢持有片段的引用。首先是因为自定义WebView不一定是ListFragment的子级。持有父片段的引用是没有意义的。第二件事是持有对Fragment的引用导致内存泄漏(我不确定)。
那么如何从WebView中调用MainActivity中的方法。
答案 0 :(得分:0)
为什么不将自定义webView编码为MainActivity中的内部类? 这样您就可以访问MainActivity中的handleClick。 http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html
或者将自定义HandleClickListener(带有handleClick方法)添加到webViews构造函数中 在MainActivity中实现HandleClickListener