【问题标题】: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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多