webview后的后退按钮

时间:2014-09-02 09:12:17

标签: android navigation onkeydown

我有2项活动活动A & 活动B (webview) 我想要做的是,当webview不能再返回时,它会显示活动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); 
}
}

包含背压功能的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时,如何弹出此提示? 我真的不知道如何做到这一点,我听说过片段,这是怎么做的?

希望这很清楚。

2 个答案:

答案 0 :(得分:0)

您应该在活动中覆盖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(); 
         }

    }

答案 1 :(得分:0)

在您的活动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活动中删除相同内容。