【问题标题】:Calling activity function from separate class从单独的类调用活动函数
【发布时间】:2013-12-17 16:26:25
【问题描述】:
我一直在关注 android 教程(找到 here),试图让一个简单的 Web 应用程序工作。
我有一个名为CalendarActivity 的活动,其中包含WebView。此WebView 呈现来自assets\www\ 文件夹的页面。我还有一个CalendarInterface,它保存了 javascript 从 html 页面调用的方法。
我想要做的是能够通过 javascript 为活动调用 finish() 函数。但是,由于这只能从 Activity 中调用 - 我如何使用单独的接口类来实现这一点?
【问题讨论】:
标签:
javascript
android
webview
android-activity
【解决方案1】:
以链接页面为例,你应该可以这样做:
public class WebAppInterface {
Activity mActivity;
/** Instantiate the interface and set the activity */
WebAppInterface(Activity activity) {
mActivity = activity;
}
/** Finish activity from the web page */
@JavascriptInterface
public void finishActivity() {
mActivity.finish();
}
}
现在,在您的活动中添加这样的 JS 界面:
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
在您的网页中,您可以通过单击一个按钮来完成活动,如下所示:
<input type="button" value="Finish the activity now" onClick="finishActivity()" />
<script type="text/javascript">
function finishActivity() {
Android.finishActivity();
}
</script>