【发布时间】:2016-06-10 08:14:04
【问题描述】:
首先,我对 Java 一无所知。我从事前端开发工作,仅此而已,我尝试过查看文档和教程,但遇到了问题。我有一个网站,我是试图让它在Android上运行。除了在 Android 设备上按下退出应用程序之外,我几乎可以正常工作(这是我所阅读的内容)
@Override
public void onBackPressed() {
if (WebView.canGoBack()) {
WebView.goBack();
} else {
super.onBackPressed();
}
}
是我尝试添加到我的代码中,但是我得到了错误:
Error:(45, 24) error: non-static method canGoBack() cannot be referenced from a static context
Error:(46, 24) error: non-static method goBack() cannot be referenced from a static context
Error:(48, 22) error: cannot find symbol method onBackPressed()
Error:(43, 9) error: method does not override or implement a method from a supertype
提前非常感谢!
P.S - 这是完整的代码。
package com.appname.appname;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.KeyEvent;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.myWebView);
myWebView.loadUrl("http://www.website.com");
myWebView.setWebViewClient(new MyWebViewClient());
//Settings
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
}
private class MyWebViewClient extends WebViewClient {
//Open links internally
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.website.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
//Back Button Fix
@Override
public void onBackPressed() {
if (WebView.canGoBack()) {
WebView.goBack();
} else {
super.onBackPressed();
}
}
}
}
谢谢。
编辑:我也尝试过在另一个 Stack 帖子中找到的代码。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (WebView.canGoBack()) {
WebView.goBack();
} else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
我在教程中被告知按 ctrl+o(在 Android Studio 中)并为 onKeyDown 选择 Override,但这不在我的列表中。然后我发现 onKeyDown 是针对 2.0 之前的手机的?所以我尝试寻找 onBackPressed 但我也找不到。我知道这将是一件非常容易的事情..
【问题讨论】: