我已經使用this指導將JavaScript代碼綁定到Android代碼,該代碼正常工作(一個Toast
消息由javascript代碼觸發並顯示double
類型的javascript代碼輸出)。我的問題是我不能在代碼的其他部分使用輸出。例如,正確的輸出是10, 20, 30, ...
,但我的代碼另一部分進入是0, 10, 20, 30, ...
。這裏是有關我的部分代碼:無法在Android代碼中正確訪問javascript輸出
public class myFragment extends Fragment {
int globalVar;
.
.
.
//some android code
.
.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_show:
loadNew();
Toast.makeText(getActivity(), "globalVar " + String.valueOf(globalVar), Toast.LENGTH_SHORT).show();
//after clicking menu item, I receive a double output from javascript,
//but first output is zero!!!
.
.
.
//some android code
.
.
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void showToast(double toast) {
Toast.makeText(mContext, String.valueOf(toast), Toast.LENGTH_SHORT).show();
//In this part of code, results are correct
globalVar = (int) (toast);
}
}
每次我點擊菜單項,一個新的頁面加載和一個javascript代碼給出了一個新的結果。
<body onLoad="showAndroidToast();">
我認爲這個問題起源於訪問內部類的變量,或者是另一個原因。 預先感謝您。
嗨,你的'showAndroidToast()'方法是什麼樣的?既然你在onLoad事件中有它,它會在你每次加載頁面時執行。因此,也許你應該寧可有一個按鈕,並在您的文檔,比如'onClick事件處理程序’)」 />
' – ishmaelMakitla
感謝您回答@ishmaelMakitla。在showAndroidToast()裏面,我定義了一個雙精靈,然後調用Android.showToast(myVar)。使用按鈕不會做任何更改,因爲在'公共無效showToast(雙烤麪包)'我收到正確的結果。 –
我看到了,你說你不能在你的另一部分代碼中使用輸出(double值) - 這個「代碼的另一部分」在哪裏似乎有不正確的數字'0,10,20,30,...' ?我懷疑這是在菜單項目點擊功能,但只是爲了確認,所以我可以建議一些東西...... – ishmaelMakitla