2012-10-25 217 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

謝謝。我真的很尷尬,沒有注意到這一點。 :-) –