Ich habe this Leitfaden für die Bindung von JavaScript-Code zu Android-Code, der ordnungsgemäß funktioniert (eine Toast
Nachricht wird ausgelöst, aus JavaScript-Code und zeigt double
Typ Ausgabe von JavaScript-Code). Mein Problem ist, dass ich die Ausgabe in anderen Teilen des Codes nicht verwenden kann. Zum Beispiel korrekte Ausgänge 10, 20, 30, ...
sind, aber was ich in einem anderen Teil des Codes zuzugreifen, ist 0, 10, 20, 30, ...
.Hier wird Teile meines Code bezogen werden:kann nicht auf Javascript-Ausgabe in Android-Code richtig zugreifen
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);
}
}
jedes Mal wenn ich auf den Menüpunkt klicken, wird eine neue Seite geladen und Javascript Code gibt ein neues Ergebnis.
Ich denke, dass das Problem durch den Zugriff auf Variablen aus inneren Klassen entstanden ist oder vielleicht gibt es einen anderen Grund. Vielen Dank im Voraus.
Hallo, wie sieht Ihre 'showAndroidToast()' Methode aus? Da Sie es im onLoad-Ereignis haben, wird es bei jedem Laden der Seite ausgeführt. Vielleicht sollten Sie lieber einen Button und einen onClick Event Handler auf Ihrem Dokument haben wie '
' – ishmaelMakitla
Vielen Dank für Ihre Antwort @ishmaelMakitla. Innerhalb von showAndroidToast() definiere ich eine doppelte Variable und rufe dann Android.showToast (myVar) auf. Die Verwendung einer Schaltfläche wird keine Änderungen vornehmen, da ich in 'public void showToast (double toast)' korrekte Ergebnisse erhalte. –
Ich sehe, Sie sagen, Sie können nicht die Ausgabe (doppelte Werte) in anderen Teilen von Ihnen Code verwenden - wo ist das "ein anderer Teil des Codes", der falsche Zahlen zu haben scheint "0, 10, 20, 30, ..." ? Ich vermute, dies ist in der Menü-Item-Click-Funktion, aber nur um zu bestätigen, damit ich etwas vorschlagen kann ... – ishmaelMakitla