2011-08-07 49 views
1

我試圖在單擊檢查帳戶時如果帳戶信息丟失時顯示警告對話框。 我在Eclipse中得到一個錯誤,其中new AlertDialog.Builder(this)the constructor AlertDialog.Builder(new View OnClickListener(){}) is undefined。 如果我將其添加到活動的onCreate中,代碼將正常工作。發生Android AlertDialog構造函數未定義

checkButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View Arg0){ 
      String AccNum = null, Store = null; 
      final SharedPreferences settings = getSharedPreferences(CHECK_PREFERENCES, MODE_PRIVATE); 

      if (settings.contains("Account") == true){ 
       AccNum = (settings.getString("Account", "default")); 
       Store = (settings.getString("Store", "default")); 
      } 
      if (AccNum.length() < 7) { 
       AlertDialog alert = new AlertDialog.Builder(this).create(); 
       alert.setTitle("Account Information missing!"); 
       alert.setMessage("Enter now? "); 

       alert.setButton("Yes", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          startActivity(new Intent(CheckOrder.this, GoToSetup.class)); 
         } 
       }); 
       alert.setButton2("No", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          return; 
         } 
       }); 
       alert.show(); 

      } 
     } 
}); 

回答

17

此錯誤的原因this是,你(在調用checkButton.setOnClickListener(new OnClickListener(){),而不是父活動創建OnClickListener。如果你的Activity類是ParentActivity,試試這個:

AlertDialog alert = new AlertDialog.Builder(ParentActivity.this).create(); 
+0

謝謝,來自C++和Delphi的學習曲線在這裏。我可以在OnClickListener之外創建它並在需要時調用該過程嗎? 我試過了,但我又收到了一個錯誤,告訴我有關我可以在課堂外打電話的事情。 –

+0

您可以在活動中創建一個函數並調用該函數,這可能會解決這些問題。 – Femi

2

你的類需要擴展活動,如

public class MyClass extends Activity{ 
// ... Your code 
} 
1

我有同樣的問題。試試這個。

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
+0

請在答案中提供一些細節。謝謝 :) –