Mam aplikację, w której WebView
wyświetlam niektóre strony internetowe. Działa, kliknięcie linku na stronie przechodzi do następnej strony w witrynie w mojej aplikacji. Ale kiedy klikam przycisk Wstecz telefonu, przenosi mnie bezpośrednio do mojej aplikacji. Zamiast tego chcę wrócić do poprzedniej strony w witrynie. W jaki sposób mogę to zrobić?
Oto przykładowy kod, którego używam:
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
źródło
źródło
Odpowiedzi:
Używam czegoś takiego w swoich działaniach z WebView:
Edytować:
Aby ten kod działał, musisz dodać pole
Activity
zawierające WebView:Zainicjuj to w
onCreate()
metodzie i powinieneś być dobry.źródło
finish()
umieścićreturn super.onKeyDown(keyCode, event)
else
blokJeśli używasz Androida 2.2 i nowszych (obecnie jest to większość urządzeń), poniższy kod zapewni Ci to, czego chcesz.
źródło
android:noHistory="true"
atrybut w<activity>
return;
? Tak jest w przewodniku szkoleniowym .To jest moje rozwiązanie. Działa również we fragmencie.
źródło
Pełne odniesienie do następnego przycisku i paska postępu: umieść przycisk wstecz i następny w widoku sieci
Jeśli chcesz przejść do tylnej strony po kliknięciu przycisku Wstecz telefonu, użyj tego:
Możesz również utworzyć niestandardowy przycisk Wstecz w następujący sposób:
źródło
Ustawianie ostrości powinno być również sprawdzane w BackPressed
źródło
Dlaczego nie użyć
onBackPressed()
?źródło
oto kod z potwierdzeniem wyjścia:
źródło
źródło
W kotlin:
webView - identyfikator komponentu webview w xml, jeśli używasz syntetycznego odwołania.
źródło
Pierwsza odpowiedź FoamyGuy jest poprawna, ale mam kilka dodatków; niska reputacja nie pozwala mi na komentowanie. Jeśli z jakichś powodów strona nie ładuje się, upewnij się, że ustawiłeś flagę, aby zanotować błąd, a następnie sprawdź ją w zastąpieniu onBackPressed. W przeciwnym razie twoja canGoBack () zostanie na zawsze wykonana bez kierowania do faktycznej aktywności back, jeśli tam była:
źródło
Poniższe biblioteki w klasie powinny obsługiwać funkcję onBackKeyPressed. canGoBack () sprawdza, czy widok sieci może odwoływać się do poprzedniej strony. Jeśli to możliwe, użyj funkcji goBack (), aby odwołać się do poprzedniej strony (cofnij się).
źródło
Oto rozwiązanie Kotlin:
źródło
Oficjalna droga Kotlin:
https://developer.android.com/guide/webapps/webview.html#NavigatingHistory
źródło
Jeśli ktoś chce obsłużyć backPressed dla webView wewnątrz fragmentu , może użyć poniższego kodu.
Skopiuj poniższy kod do swojej
Activity
klasy (która zawiera fragmentYourFragmmentName
)}
Skopiuj ten kod do fragmentu
YourFragmentName
Notatki
Activity
należy zastąpić faktyczną klasą Acacity, której używasz.YourFragmentName
powinien zostać zastąpiony nazwą twojego Fragmentu.webView
wYourFragmentName
tak, że może on być dostępny z wewnątrz funkcji.źródło
Możesz wypróbować to dla webview w fragmencie:
źródło
użyj tego kodu, aby wrócić na stronę, a kiedy przyszła ostatnia strona, wyjdź z aktywności
źródło
Webview in Activity, Poniższy kod działał dla mnie, Zakończ działanie po załadowaniu adresu URL do webview.in po cofnięciu go przejdź do poprzedniej aktywności
źródło