当我在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类设置了列表值。我错过了什么吗?有人可以帮助我吗。
答案 0 :(得分:2)
更改
webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
到
webView.addJavascriptInterface(javaScriptInterface, "Android");