Problem: Ich möchte eine Webseite in einem Android WebView laden und an eine Aktivität anhängen, wenn die Aktivität bereit ist. Der Triggerpunkt für das Laden der Webseite ist, bevor die eigentliche Aktivität erstellt wird. So erstelle ich ein Webview-Objekt in einem Dienst folgendermaßen.Was ist der Unterschied, wenn ich ein Android-WebView-Objekt mit einem ContextWrapper und einem Kontext erstellen?
MutableContextWrapper contextWrapper = new MutableContextWrapper(serviceContext.getApplicationContext());
this.webView = new WebView(contextWrapper);
Wenn die Aktivität, die diese Webansicht zeigen muss erstellt wird ich eine framelayout nur erstellen und ein Kind Ansicht heißt dieses webview und rufen setContentView hinzuzufügen. Auf diese Weise erscheint mein Webview mit der vorinstallierten Webseite. Ich mache auch folgende
contextWrapper.setBaseContext(CurrentActivity.this);
Dies ist das gleiche ContextWrapper-Objekt wie oben angegeben. Auch danach zeichnet das Webview keine JavaScript-Alerts, die es im normalen Anwendungsfall zeichnen kann.
Selbst wenn ich
ContextWrapper contextWrapper = new ContextWrapper(CurrentActivity.this);
this.webView = new WebView(contextWrapper);
this.webView.loadUrl(someUrl);
Die WebView nicht in der Lage ist JS-Benachrichtigungen Pop-up. Ich sehe keine Ausnahmen oder tödliche Tags in den Protokollen. WebView kann keine Fenster darüber zeichnen.
Dies funktioniert auf die übliche Weise, dh das Erstellen eines WebView direkt mit dem Kontext der aktuellen Aktivität.
this.webView = new WebView(CurrentActivity.this);
this.webView.loadUrl(someUrl);
Für alle weiß, dass ich ein http://developer.android.com/reference/android/content/ContextWrapper.html führt nur die gleichen Operationen auf der Basis Kontext als es in den Konstruktor übergeben hält.
Mein Anwendungsfall ist so etwas. Ich erstelle ein WebView-Objekt mit einem übergebenen http://developer.android.com/reference/android/content/MutableContextWrapper.html. Der MutableContextWrapper enthält den Kontext einiger Aktivitäten, die er halten kann, oder den Anwendungskontext. Wenn die eigentliche Aktivität, die das Webview anzeigen soll, gestartet wird, wechsle ich den Kontext innerhalb des MutableContextWrapper und zeige das Webview an, indem ich es in ein Frame-Layout und setContentView setze. Grundsätzlich ist der Auslöser, um die Seite zu laden, bevor die Aktivität erstellt wird und daher möchte ich die Seite in der Webansicht laden und sie einfach an die Aktivität anhängen, wenn sie erstellt wird.
ich die Frage nicht ganz verstehen kann. Solange es so stark aufgewertet ist, kann jemand versuchen, es klarer zu machen? –
Hallo Boris, ich habe die Fragedetails aktualisiert –