1

当在 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 时,尽管我正在从我的活动类中设置列表值,但列表始终为空。我错过了什么吗?有人可以帮我解决这个问题。

4

1 回答 1

2

改变

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

webView.addJavascriptInterface(javaScriptInterface, "Android");
于 2012-10-25T07:06:33.140 回答