2014-09-02 6 views
0

У меня 2 мероприятия Activity A & активность B (WebView) Что я пытаюсь сделать это, когда WebView не может вернуться больше, он будет отображать активность A и снова нажмите для выхода подскажетекнопку Назад после WebView

Вот активность 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, который содержит функцию backpress:

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 идет назад и когда он не может больше переключаться обратно на активности А и если нажать снова покидает приложение

Я на самом деле с помощью:

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(); 

    } 
} 

подсказки прекрасно работают, но всплывают, когда веб-просмотр больше не может вернуться, если да, то вы вернетесь к активности A

как я могу сделать это приглашение появляться, когда текущий акт тивности - это A, а не веб-просмотр? Я действительно не знаю, как это сделать, я слышал об фрагментах, это способ сделать это?

желающий это ясно.

+0

не могли бы вы уточнить, что непонятно, каково ваше фактическое требование? –

ответ

0

Вы должны переопределить onBackPressed() в обоих действиях.

В активность А:

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

     } 

В активность B:

@Override 
public void onBackPressed(){ 

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

     }else{ 
       super.onBackPressed(); 
     } 

    } 
+0

Удивительный мужчина! я не думал об этом, и все же так просто! благодаря !! – 2014-09-02 09:29:48

+1

@ MuiMui, super.onBackPressed(); идет в другом случае, если другой мудрый называется даже доступным стеклом веб-просмотра. –

+0

yep, я забыл его в классе веб-просмотра, в любом случае переопределить onbackpress в другой активности был способ сделать это! – 2014-09-02 09:35:24

0

В вашем Avtivity А переопределить 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(); 
} 

И удалить то же самое от активности webview в блоке else.

+0

Благодарю вас за ваше время, так оно и было, но получил ответ как 1 минута раньше, обязательно вернется в + rep. Еще раз спасибо – 2014-09-02 09:46:24

+0

@MuiMui :) счастливое кодирование. –

Смежные вопросы