2011-05-04 128 views
0

我正在創建一個在webview中打開url的應用程序。然後當後退按鈕被按下時,這會打開一個對話框詢問用戶是否確定他們是否要退出。雖然該對話框正常工作,但該應用程序不會加載該網站,現在我有錯誤,因此當我放入HelloWebViewClient時甚至無法進行編譯。 你有什麼建議嗎? 謝謝!帶後退按鈕的WebView對話框

這裏是我的代碼:

package de.vogella.android.alertdialog; 





import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.Toast; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class ShowMyDialog extends Activity { 
    private WebView webview; 

    /** Called when the activity is first created. */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
      openMyDialog(null); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 




    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     webview = (WebView) findViewById(R.id.webview); 
     webview.setWebViewClient(new HelloWebViewClient()); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.setInitialScale(50); 
     webview.getSettings().setUseWideViewPort(true); 
     webview.loadUrl("http://mdsitest2.com/"); 
    } 
    private class HelloWebViewClient extends WebViewClient { 

     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 


      } 







    public void openMyDialog(View view) { 
     showDialog(10); 
    } 

    @Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case 10: 
      // Create our AlertDialog 
      Builder builder = new AlertDialog.Builder(this); 
      builder.setMessage("Are you sure you want to exit?") 
        .setCancelable(true) 
        .setPositiveButton("Yes", 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, 
             int which) { 
            // Ends the activity 
            ShowMyDialog.this.finish(); 
           } 
          }) 
        .setNegativeButton("Keep Guessing!", 
          new DialogInterface.OnClickListener() { 

           @Override 
           public void onClick(DialogInterface dialog, 
             int which) { 
            Toast.makeText(getApplicationContext(), 
              "Good Luck!", 
              Toast.LENGTH_SHORT).show(); 
           } 
          }); 


      AlertDialog dialog = builder.create(); 
      dialog.show(); 

     } 
     return super.onCreateDialog(id); 
    } 
} 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 



<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:layout_height="fill_parent" android:layout_width="fill_parent" android:scrollbarAlwaysDrawVerticalTrack="false"/> 




</LinearLayout> 
+0

不要從'onCreateDialog()'方法調用'dialog.show();'。只需返回創建的對話框 – Michael 2011-05-04 19:39:46

+0

你認爲你可以澄清我將如何改變代碼返回創建的對話框?我很新,非常感謝!謝謝! – 2011-05-05 08:30:13

+0

你必須改變行'AlertDialog dialog = builder.create();你的代碼中的dialog.show();'返回builder.create();'; – Michael 2011-05-05 09:00:12

回答

0

嘗試重寫的onBackPressed按鈕,而不是通過onkeydown事件做這件事的。還執行Pixie所做的註釋...