2013-07-30 92 views
1

你好我想嘗試幾天在幾個方面得到這個工作,我失敗了,如果有人可以請幫助我找出我做錯了什麼,我想要的是當我按該按鈕會顯示在吐司的JavaScript文字:日食使用JavaScriptInterface觸發從吐司吐司

我的Java主:

package com.callphone; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.widget.Toast; 


public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     String content = "file:///android_asset/www/mypage.html"; 
     WebView webView = (WebView) findViewById(R.id.mybrowser); 
     WebSettings webSettings = webView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webView.setWebChromeClient(new WebChromeClient()); 
     webView.loadUrl(content); 
     webView.addJavascriptInterface(new MyJavaScriptInterface(this), "AndroidFunction"); 
    } 
     public class MyJavaScriptInterface { 
      Context mContext; 

       MyJavaScriptInterface(Context c) { 
        mContext = c; 
       } 
       public void showToast(String toast){ 
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
       } 
    } 

    } 

我的xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<WebView 
    android:id="@+id/mybrowser" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</LinearLayout> 

我的html:

<!DOCTYPE html> 
<html> 
<head> 
<script src="index.js"></script> 
</head> 
<body> 
<h1>What's your number</h1> 
<button onclick="shownumber('55555')">show number</button> 
</body> 
</html> 

和我的javascript:

function shownumber(number) { AndroidFunction.showToast(number); }

當我改變的JavaScript提醒它顯示警報,所以我想這個問題的AndroidFunction

由於事先與

回答

1

按照doucmentation你缺少註釋@JavascriptInterface您MyJavaScriptInterface

這應該工作在:

public class MyJavaScriptInterface { 
      Context mContext; 

       MyJavaScriptInterface(Context c) { 
        mContext = c; 
       } 
       @JavascriptInterface 
       public void showToast(String toast){ 
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
       } 
    } 
+0

感謝很多是解決它! – user2633763