Я использовал this руководство по привязке кода JavaScript к Android-коду, который работает правильно (сообщение Toast
запускается из кода javascript и показывает double
тип вывода кода javascript). Моя проблема в том, что я не могу использовать вывод в других частях кода. Например, правильные выходы 10, 20, 30, ...
, но то, что я достигаю в другой части кода 0, 10, 20, 30, ...
.Здесь связана части моего кода:не может получить выход javascript в коде Android правильно
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() я определяю double vaiable, а затем вызываю Android.showToast (myVar). Использование кнопки не вносит никаких изменений, потому что в 'public void showToast (двойной тост)' я получаю правильные результаты. –
Я вижу, вы говорите, что вы не можете использовать выходные данные (двойные значения) в других частях кода - где это «другая часть кода», которая, кажется, имеет неправильные номера «0, 10, 20, 30, ...» ? Я подозреваю, что это функция Menu-Item-Click, но для подтверждения, поэтому я могу что-то предложить ... – ishmaelMakitla