티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to go back to previous page if back button is pressed in WebView?
WebView에서 뒤로 버튼을 눌렀을 때 이전 페이지로 돌아가는 방법
문제 내용
I have an app in which I have a WebView
where I display some websites. It works, clicking a link in the webpage goes to the next page in the website inside my app. But when I click the phone's back button, it takes me straight into my app. I want to go back to the previous page in the website instead. How can I do this?
일부 웹 사이트를 표시하는 WebView가 있는 앱이 있습니다. 작동하며, 웹 페이지의 링크를 클릭하면 내 앱 내 웹 사이트의 다음 페이지로 이동합니다. 하지만 내가 전화기의 뒤로 버튼을 클릭하면, 내 앱으로 바로 들어간다. 나는 대신 웹사이트의 이전 페이지로 돌아가고 싶다. 이거 어떻게 해요?
Here is the code sample I'm using:
사용 중인 코드 샘플은 다음과 같습니다.
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);
}
});
}
}
높은 점수를 받은 Solution
I use something like this in my activities with WebViews:
WebView 활동에서 다음과 같은 기능을 사용합니다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
Edit:
편집:
For this code to work, you need to add a field to the Activity
containing the WebView:
이 코드가 작동하려면 WebView를 포함하는 액티비티에 필드를 추가해야 합니다.
private WebView mWebView;
Initialize it in the onCreate()
method and you should be good to go.
onCreate() 메서드에서 초기화하면 바로 시작할 수 있습니다.
mWebView = (WebView) findViewById(R.id.webView);
가장 최근 달린 Solution
WebView mWebView;
mWebView = findViewById(R.id.webView);
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
출처 : https://stackoverflow.com/questions/6077141/how-to-go-back-to-previous-page-if-back-button-is-pressed-in-webview
'개발 > 안드로이드' 카테고리의 다른 글
Android에서 액티비티가 시작될 때 EditText에 포커스 가는 것 막기 (0) | 2022.11.30 |
---|---|
onActivityResult가 Fragment에서 호출되지 않습니다 (0) | 2022.11.30 |
안드로이드 인텐스에서 추가 데이터를 얻으려면 어떻게 해야 하나요? (0) | 2022.11.29 |
WebView에서 URL 로드가 끝난 시점 확인하기 (0) | 2022.11.29 |
Android 레이아웃 파일에서 "toos:context"란 무엇입니까? (0) | 2022.11.29 |