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になります。私は何かが欠けていますか?誰かが親切にこれを手伝ってくれませんか。