2012-10-25 157 views
1

我试图从我的Web视图中获取一个在html页面中单击表格行时的回调。我的活动如下:Web查看addJavascriptInterface问题

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; 
    } 
    } 

回叫工作正常。但是,当我尝试访问employeeList从回叫方法列表总是null虽然我设置我的活动类的列表值。我错过了什么?有人可以帮我解决这个问题。

回答

2

变化

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

webView.addJavascriptInterface(javaScriptInterface, "Android"); 
+0

谢谢。我真的很尴尬,没有注意到这一点。 :-) –