Web视图addJavascriptInterface问题

时间:2012-10-25 06:59:00

标签: android

当我在html页面中点击表格行时,我正试图从我的Web视图中回复。我的活动如下:

 public class LocalizationTestActivity extends Activity {



/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LinearLayout linearLayout = new LinearLayout(this);
    linearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
    WebView webView = new WebView(this);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.FILL_PARENT));
    JavaScriptInterface javaScriptInterface=new JavaScriptInterface(this);
    webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    Vector<Employee> test=new Vector<Employee>();
    for (int i=1;i<20;i++){
        Employee employee=new Employee();
        employee.setId(i);
        employee.setName("Norton - "+i);
        employee.setAddress("Indiranagar - " +i);
        test.add(employee);
    }
    javaScriptInterface.setDashboardList(test);

    webView.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {

            view.loadUrl("javascript:populateData()");
        }

    });

    webView.loadUrl("file:///android_asset/html/test2.html");
    linearLayout.addView(webView);
    setContentView(linearLayout);
}
}

我的Java脚本类如下:

public class JavaScriptInterface {
private Context mContext;
private Vector employeeList;

    /** Instantiate the interface and set the context */
    JavaScriptInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    public void callBack(String toast) {

        int index=Integer.parseInt(toast);
        Intent intent=new Intent(mContext, SampleActivity.class);

        if(employeeList!=null && index<employeeList.size()){
            Employee employee=(Employee) employeeList.elementAt(index);
            intent.putExtra("value", "1");
            intent.putExtra("name", employee.getName());
            intent.putExtra("address", employee.getAddress());
        }
        mContext.startActivity(intent);
    }


    public void setEmployeeList(Vector employeeList) {
        this.employeeList= employeeList;
    }
    }

回拨工作正常。但是当我尝试从 callBack 方法访问employeeList时,列表总是 null ,尽管我从我的activity类设置了列表值。我错过了什么吗?有人可以帮助我吗。

1 个答案:

答案 0 :(得分:2)

更改

webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

webView.addJavascriptInterface(javaScriptInterface, "Android");