Android 为什么“后退”按钮不适用于此代码?
我有一个应用程序,其中我有一个网络视图,可以显示一些网站。它的工作原理是,点击网页中的一个链接,进入我的应用程序中网站的下一页。但当我点击手机的后退按钮时,它会直接进入我的应用程序。我想回到网站的前一页。我该怎么做 这是我的密码Android 为什么“后退”按钮不适用于此代码?,android,Android,我有一个应用程序,其中我有一个网络视图,可以显示一些网站。它的工作原理是,点击网页中的一个链接,进入我的应用程序中网站的下一页。但当我点击手机的后退按钮时,它会直接进入我的应用程序。我想回到网站的前一页。我该怎么做 这是我的密码 public class WebView extends AppCompatActivity { private android.webkit.WebView webView; private ProgressBar progressBar; private Line
public class WebView extends AppCompatActivity {
private android.webkit.WebView webView;
private ProgressBar progressBar;
private LinearLayout layoutProgress;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.webview);
webView = (android.webkit.WebView) findViewById(R.id.webViewMain);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
layoutProgress = (LinearLayout) findViewById(R.id.layoutProgress);
webView.setVisibility(View.GONE);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
settings.setDisplayZoomControls(false);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(android.webkit.WebView view, String url) {
webView.setVisibility(View.VISIBLE);
layoutProgress.setVisibility(View.GONE);
progressBar.setIndeterminate(false);
super.onPageFinished(view, url);
}
@Override
public void onPageStarted(android.webkit.WebView view, String url, Bitmap favicon) {
layoutProgress.setVisibility(View.VISIBLE);
progressBar.setIndeterminate(true);
super.onPageStarted(view, url, favicon);
}
});
if (isOnline()) {
webView.loadUrl("http://www.**********.com/ ");
} else {
String summary = "<html><body><font color='red'>No Internet Connection</font></body></html>";
webView.loadData(summary, "text/html", null);
toast("No Internet Connection.");
}
}
private void toast(String message) {
Toast.makeText(WebView.this, message, Toast.LENGTH_LONG).show();
}
private boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return (netInfo != null && netInfo.isConnected());
}
@Override
public void onBackPressed() {
if(webView.canGoBack() == true) {
webView.goBack();
} else {
WebView.super.onBackPressed();
}
}
}
公共类WebView扩展了AppCompative活动{
私有android.webkit.WebView WebView;
私人ProgressBar ProgressBar;
私人线路布局进度;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
这个.setContentView(R.layout.webview);
webView=(android.webkit.webView)findviewbyd(R.id.webViewMain);
progressBar=(progressBar)findViewById(R.id.progressBar);
layoutProgress=(LinearLayout)findViewById(R.id.layoutProgress);
webView.setVisibility(View.GONE);
WebSettings=webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuilTinZoomControl(true);
设置。设置支持缩放(真);
settings.setDisplayZoomControl(false);
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(android.webkit.WebView视图,字符串url){
view.loadUrl(url);
返回true;
}
@凌驾
public void onPageFinished(android.webkit.WebView视图,字符串url){
设置可见性(View.VISIBLE);
layoutProgress.setVisibility(View.GONE);
progressBar.SetUndeterminate(假);
super.onPageFinished(视图、url);
}
@凌驾
public void onPageStarted(android.webkit.WebView视图、字符串url、位图favicon){
layoutProgress.setVisibility(View.VISIBLE);
progressBar.SetUndeterminate(真);
super.onPageStarted(视图、url、favicon);
}
});
if(isOnline()){
webView.loadUrl(“http://www.**********.com/”;
}否则{
String summary=“没有互联网连接”;
loadData(摘要,“text/html”,空);
toast(“无互联网连接”);
}
}
私有void toast(字符串消息){
Toast.makeText(WebView.this,message,Toast.LENGTH_LONG.show();
}
私有布尔isOnline(){
ConnectivityManager cm=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo netInfo=cm.getActiveNetworkInfo();
return(netInfo!=null&&netInfo.isConnected());
}
@凌驾
public void onBackPressed(){
if(webView.canGoBack()==true){
webView.goBack();
}否则{
WebView.super.onBackPressed();
}
}
}
尝试此添加键
@Override
public void onBackPressed() {
if (webview.canGoBack()) {
webview.goBack();
} else {
finish();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//Display confirmation here, finish() activity.
if (webview.canGoBack()) {
webview.goBack();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
尝试此添加键
@Override
public void onBackPressed() {
if (webview.canGoBack()) {
webview.goBack();
} else {
finish();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//Display confirmation here, finish() activity.
if (webview.canGoBack()) {
webview.goBack();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
检查此代码,这对您有帮助
@Override
public void onBackPressed()
{
if(webView.canGoBack()){
webView.goBack();
}else{
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Exit!")
.setMessage("Are you sure you want to close?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton("No", null)
.show();
/*Intent intent = new Intent(HomeActivity.this, SelectionActivity.class);
startActivity(intent);
finish();*/
}
}
检查此代码,这对您有帮助
@Override
public void onBackPressed()
{
if(webView.canGoBack()){
webView.goBack();
}else{
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Exit!")
.setMessage("Are you sure you want to close?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton("No", null)
.show();
/*Intent intent = new Intent(HomeActivity.this, SelectionActivity.class);
startActivity(intent);
finish();*/
}
}
遵循以下问题:我建议您不要发布相同的问题。谢谢。问题相同,但有些代码不同。然后我建议您在应用程序中维护缓存队列。当单击任何链接时,您将链接放入该队列中,单击“后退”按钮时,您将从队列中加载URL。请回答以下问题:我建议您不要发布相同的问题,谢谢。问题相同,但某些代码不同。然后,我建议您在应用程序中维护缓存队列。当任何链接将被点击,然后你把该链接在该队列中,而返回按钮点击你从队列加载URL。我正在工作你的代码工作良好。。。没问题。。你能在按back Press时登录吗?我正在使用你的代码,工作正常。。。没问题。。你能在按下后记录吗