Ich habe eine App, in der ich WebView
einige Websites anzeigen kann. Es funktioniert, wenn Sie auf einen Link auf der Webseite klicken, gelangen Sie zur nächsten Seite der Website in meiner App. Wenn ich jedoch auf die Zurück-Schaltfläche des Telefons klicke, gehe ich direkt in meine App. Ich möchte stattdessen zur vorherigen Seite der Website zurückkehren. Wie kann ich das machen?
Hier ist das Codebeispiel, das ich verwende:
public class Webdisplay extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.webdisplay);
getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
Window.PROGRESS_VISIBILITY_ON);
Toast loadingmess = Toast.makeText(this,
"Cargando El Diario de Hoy", Toast.LENGTH_SHORT);
loadingmess.show();
WebView myWebView;
myWebView = (WebView) findViewById(R.id.webview);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.elsalvador.com");
myWebView.setWebViewClient(new WebViewClient());
myWebView.setInitialScale(1);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setUseWideViewPort(true);
final Activity MyActivity = this;
myWebView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
MyActivity.setTitle("Loading...");
MyActivity.setProgress(progress * 100);
if(progress == 100)
MyActivity.setTitle(R.string.app_name);
}
});
}
}
android
android-webview
zvzej
quelle
quelle
Antworten:
Ich verwende so etwas in meinen Aktivitäten mit WebViews:
Bearbeiten:
Damit dieser Code funktioniert, müssen Sie
Activity
dem WebView ein Feld hinzufügen:Initialisieren Sie es in der
onCreate()
Methode und Sie sollten bereit sein zu gehen.quelle
finish()
setzenreturn super.onKeyDown(keyCode, event)
else
Block entfernenWenn Sie Android 2.2 und höher verwenden (dies sind derzeit die meisten Geräte), erhalten Sie mit dem folgenden Code das, was Sie möchten.
quelle
android:noHistory="true"
Attribut in der<activity>
Sie wollen, in der AndroidManifest.xmlreturn;
? Dies geschieht im Trainingsleitfaden .Das ist meine Lösung. Es funktioniert auch in Fragment.
quelle
Vollständige Referenz für die nächste Schaltfläche und den Fortschrittsbalken: Zurücksetzen und nächste Schaltfläche in der Webansicht
Wenn Sie beim Klicken auf die Schaltfläche "Zurück" des Telefons zur Rückseite wechseln möchten, verwenden Sie Folgendes:
Sie können auch eine benutzerdefinierte Zurück-Schaltfläche wie folgt erstellen:
quelle
Die Fokussierung sollte auch in onBackPressed aktiviert sein
quelle
Warum nicht verwenden
onBackPressed()
?quelle
Hier ist ein Code mit Bestätigungs-Exit:
quelle
quelle
In Kotlin:
webView - ID der Webview-Komponente in XML, wenn eine synthetische Referenz verwendet wird.
quelle
Die erste Antwort von FoamyGuy ist richtig, aber ich habe einige Ergänzungen; Ein niedriger Ruf kann mir keine Kommentare erlauben. Wenn Ihre Seite aus bestimmten Gründen nicht geladen werden kann, stellen Sie sicher, dass Sie ein Flag setzen, um den Fehler zu notieren, und überprüfen Sie es dann bei der Überschreibung von onBackPressed. Andernfalls wird Ihr canGoBack () für immer ausgeführt, ohne zur eigentlichen Rückaktivität zu wechseln, wenn es dort war:
quelle
Sie sollten die folgenden Bibliotheken in Ihrer Klasse mit onBackKeyPressed behandeln. canGoBack () prüft, ob die Webansicht auf die vorherige Seite verweisen kann. Wenn es möglich ist, verwenden Sie die Funktion goBack (), um auf die vorherige Seite zu verweisen (zurück).
quelle
Hier ist die Kotlin-Lösung:
quelle
Offizieller Kotlin Way:
https://developer.android.com/guide/webapps/webview.html#NavigatingHistory
quelle
Wenn jemand backPressed für eine WebView in einem Fragment verarbeiten möchte , kann er den folgenden Code verwenden.
Kopieren Sie den folgenden Code in Ihre
Activity
Klasse (die ein Fragment enthältYourFragmmentName
).}}
Kopieren Sie diesen Code in das Fragment
YourFragmentName
Anmerkungen
Activity
sollte durch die tatsächlich verwendete Acitivity-Klasse ersetzt werden.YourFragmentName
sollte durch den Namen Ihres Fragments ersetzt werden.webView
in,YourFragmentName
damit Sie innerhalb der Funktion darauf zugreifen können.quelle
Sie können dies für die Webansicht in einem Fragment versuchen:
quelle
Verwenden Sie diesen Code, um zur Seite zurückzukehren. Wenn die letzte Seite gekommen ist, wird die Aktivität eingestellt
quelle
Webview in Aktivität, Der folgende Code hat für mich funktioniert. Beenden Sie die Aktivität, nachdem Sie die URL in webview.in onbackpressed auf die vorherige Aktivität zurückgesetzt haben
quelle