2011-08-14 84 views
0

我有一個警告對話框,應該將布爾值設置爲true。對於setPositiveButton,我將Dialog的onclick接口設爲null。當我將一個onClickListener添加到setNegativeButtons onclick接口時,它給了我一個編譯錯誤,說:AlertDialog.Builder類型中的setNegativeButton(int,DialogInterface.OnClickListener)方法不適用於參數(String,new View.OnClickListener(){ })AlertDialog按鈕的問題

這是我的代碼,爲什麼我得到一個編譯錯誤,我該如何解決這個問題?由於

  new AlertDialog.Builder(ImTracking.this) 

        .setMessage(
          Html.fromHtml(getText("http://www.cellphonesolutions.net/im-following-" 
            + getResources().getString(
              R.string.Country)))) 
        .setPositiveButton("OK", null) 
        // The red squigly is under the .setNegativeButton 
        .setNegativeButton("Don't Remind", new OnClickListener() { 


         @Override 
         public void onClick(View arg0) { 
          // TODO Auto-generated method stub 

          SharedPreferences prefs= getSharedPreferences("Settings",0); 
          SharedPreferences.Editor editor=prefs.edit(); 
          editor.putBoolean("ImTrackingDontRemind",true); 
          editor.commit(); 
         } 
        }).show(); 

回答

7

所以這是它應該是

alertDialog.setNegativeButton("Don't Remind", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 

         // TODO Auto-generated method stub 

         SharedPreferences prefs= getSharedPreferences("Settings",0); 
         SharedPreferences.Editor editor=prefs.edit(); 
         editor.putBoolean("ImTrackingDontRemind",true); 
         editor.commit(); 

    } }); 
+0

這就是它,對話框是如此煩人。謝謝 – Sean

5

這裏是您的解決方案,你做了一個愚蠢的錯誤有哥們。

它不應該是

.setNegativeButton("Don't Remind", new OnClickListener() 

應該

.setNegativeButton("Don't Remind", new DialogInterface.OnClickListener() 
2

除了提供答案,或許這也將是審慎的提供,爲什麼這就是答案的解釋。此外,肖恩的問題是,

... 爲什麼我得到一個編譯錯誤,如何解決這一問題?

強調我的。儘管接受的答案回答了後面的問題,但它並不試圖回答前面的問題。

肖恩,onClickListner你創建的匿名內部類實際上是View的成員函數,因爲你沒有提供類名。

public abstract void onClick (DialogInterface dialog, int which)

ViewonClickListner成員函數:您的編譯錯誤從AlertDialog延伸Dialog類,而不是View類,因此具有與不同的函數簽名的onClickListner成員函數的事實莖:

public abstract void onClick (View v)