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にアクセスしようとすると、アクティビティクラスからリスト値を設定していますが、リストは常にnullになります。私は何かが欠けていますか?誰かが親切にこれを手伝ってくれませんか。

4

1 に答える 1

2

変化する

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

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