你能不能告诉我为什么当我点击设备的后退按钮时应用程序退出。我正在使用webview。我在点击该页面上的任何一个链接“one.link”它将转到“next.link”然后它转到下一页。但当我按下后退按钮我的应用程序退出。没有转到上一页。这意味着它不支持历史记录。
我们可以这样做吗?我使用了此代码Layout.xml
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
和ApplicationLoad.java
是:
public class ApplicationLoad extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app);
WebView browser = (WebView) findViewById(R.id.webview);
browser.loadUrl("http://www.tutorialspoint.com");
}
}
答案 0 :(得分:4)
默认情况下,Activity假设已完成,因此它是默认行为,为了对后退键事件执行自定义任务,您需要覆盖Activity
的此方法。
@Override
public void onBackPressed() {
if(browser.canGoBack()){
//if we can go back, just go back
browser.goBack();
}else{
//let the parent handle it.
super.onBackPressed();
}
}
确保将WebView设为您的类字段:
WebView browser;
并在onCreate();
this. browser = (WebView) findViewById(R.id.webview);
browser.loadUrl("http://www.tutorialspoint.com");
答案 1 :(得分:1)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(mWebView.canGoBack() == true){
mWebView.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:0)
您需要覆盖onBackPressed()
方法并自行实施历史记录导航。
这样的事情:
@Override
public void onBackPressed() {
if(browser.canGoBack()) {
browser.goBack();
} else {
super.onBackPressed();
}
}
适用于Android 2.2及更高版本,适用于较旧的Android版本{。}}。
答案 3 :(得分:0)
这是默认情况下后退按钮的工作原理。它完成了当前的活动。要回到您应该覆盖onBackPressed
@Override
public void onBackPressed()
{
if (webView.canGoBack())
{
webView.goBack();
}
else
{
super.onBackPressed();
}
}
答案 4 :(得分:0)
将此代码段复制到您的活动中。
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWebView=(WebView)findViewById(R.id.webview);
// Do other things
}
@Override
public void onBackPressed() {
//Check if the webview can go back
if (mWebView.canGoBack()) {
mWebView.goBack();
}else{
//This will finish the activity
super.onBackPressed();
}
}