【问题标题】:Back button after webviewwebview后的返回按钮
【发布时间】:2014-09-02 17:33:54
【问题描述】:

我有 2 个活动 活动 A活动 B(网络视图) 我想要做的是,当 webview 不能再返回时,它将显示 Activity A 并再次按下提示退出

这是活动 A:

import com.jeumont.app.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;



public class frontpage extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.frontpage); 
}
}

包含backpress功能的webview:

public class webview extends Activity {

private WebView webView;
@SuppressLint("SetJavaScriptEnabled") @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Init Barre de chargement
    final ProgressDialog pd = ProgressDialog.show(this, "", "Chargement en cours", true);
    setContentView(R.layout.activity_webapp);
    webView = (WebView) findViewById(R.id.webView_web_app);
    webView.getSettings().setJavaScriptEnabled(true);
    String url = getIntent().getStringExtra("url");
    webView.loadUrl(url);
    webView.setWebViewClient(new WebViewClient()
    {
         //On enleve le progress quand la page est chargée
        public void onPageFinished(WebView view, String url)
              { 
                pd.dismiss();
                 super.onPageFinished(view, url);
              }

所以我尝试了几种方法来完成这项工作。

public void onBackPressed (){

    if (webView.isFocused() && webView.canGoBack()) {
            webView.goBack(); 

    }
 super.onBackPressed(); 

按预期工作,webview 会返回,当它不能再切换回活动 A 时,如果您再次按下离开应用程序

我实际上正在使用:

public void onBackPressed (){

    if (webView.isFocused() && webView.canGoBack()) {
            webView.goBack();       
    }

    else

    {

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Voulez vous quitter ?")
                   .setCancelable(false)
                   .setPositiveButton("Oui", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            finish();
                       }
                   })
                   .setNegativeButton("Non", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                       }
                   });
            AlertDialog alert = builder.create();
            alert.show();

    }
}

提示工作正常,但是当 webview 无法返回时它会弹出,如果按下是,则返回活动 A

当当前活动是 A 而不是 webview 时,如何使这个提示弹出? 我真的不知道该怎么做,我听说过碎片,是这样做的吗?

希望这很清楚。

【问题讨论】:

  • 能否请您详细说明不明白您的实际要求是什么?

标签: android navigation onkeydown


【解决方案1】:

您应该在这两个活动中覆盖 onBackPressed()。

在活动 A 中:

        @Override
        public void onBackPressed (){
                   //AlertDialog to exit the app.

        }

在活动 B 中:

@Override
public void onBackPressed (){

        if (webView.isFocused() && webView.canGoBack()) {
                webView.goBack(); 

        }else{
              super.onBackPressed(); 
         }

    }

【讨论】:

  • 好人!我根本没有想到这一点,但如此简单!谢谢!!
  • @MuiMui,super.onBackPressed();是在其他情况下进行,否则称为甚至可用的 webview 返回堆栈。
  • 是的,我在 webview 类中忘记了它,无论如何覆盖其他活动中的 onbackpress 是这样做的!
【解决方案2】:

在您的 Avtivity A 中,覆盖 onBackPressed 并输入显示提示的代码:

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Voulez vous quitter ?")
           .setCancelable(false)
           .setPositiveButton("Oui", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   finish();
               }
           })
           .setNegativeButton("Non", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   dialog.cancel();
               }
           });
     AlertDialog alert = builder.create();
     alert.show();
}

并在 else 块中从 webview 的活动中删除相同的内容。

【讨论】:

  • 感谢您的宝贵时间,就是这样,但在 1 分钟前就得到了答案,肯定会回到 +rep。再次感谢
  • @MuiMui :) 编码愉快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2011-08-29
  • 1970-01-01
  • 2016-10-02
相关资源
最近更新 更多