2013-11-26 101 views
0

我正在編寫一個程序,顯示一個按鈕列表,每個按鈕代表一個城市中的不同景點。點擊按鈕後,對話框應該向用戶顯示兩個選項,「更多信息」和「映射」。點擊「更多信息」按鈕將引導用戶訪問景點的網站,並且「地圖」按鈕將顯示帶有該景點的Google地圖的頁面。嵌套的OnClickListeners

我的問題是,每當點擊按鈕的吸引力,我需要生成兩個按鈕,他們都有自己的OnClickListeners AlertDialogBox。當我嘗試在AlertDialogBox上創建兩個按鈕時,問題就會發生。我收到一個錯誤,指出這些按鈕無法創建。

在另一個程序中,我試着創建一個AlertDialogBox,它工作正常,所以我不確定問題是什麼。我的代碼如下

button.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      new AlertDialog.Builder(getApplicationContext()) 
     .setTitle(name) 
     .setIcon(R.drawable.ic_launcher) 
     .setMessage("Get More Information") 
     .setNegativeButton(1, new OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
      ) 
      intent = new Intent(); 
      } 
      }) 
      .create() 
      .show(); 
    } 
}); 
+0

可以包含錯誤信息? – Tyler

回答

0

setNegativeButton(int textId, DialogInterface.OnClickListener listener)將一個文本資源 ID,作爲參數的方法。例如:R.string.my_stringR.string.app_name或其他。該資源未找到,因此無法創建AlertDialog。

你可能想改變你的 setNegativeButton(int textId, DialogInterface.OnClickListener listener)通話

您可以如用setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener)這需要一個的CharSequence(String是一個的CharSequence,你可以傳遞一個)作爲參數(文字)上顯示的按鈕,如:"More Info""Map It"

此外,而不是getApplicationContext()您可能會使用v.getContext()

0

試試這個:

Button btn = (Button) findViewById(R.id.btn); 

    btn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this); 
      .setTitle(name) 
      .setIcon(R.drawable.ic_launcher) 
      .setMessage("Get More Information") 

      .setPositiveButton("Ok",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        //do operations 
       } 
      }) 

      .setNegativeButton("Close",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 

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

     } 
    }); 
0

您沒有正確地實現你的.setNegativeButton()方法,最好應該有2個參數,

  1. 按鈕文本:這可以是一個String(即「你好「)或strings.xml文件中定義的String resource(即R.string.hello) res/values文件夾中。

  2. 其次,必須是聽 到對話框按鈕點擊,在它的onClick可以執行你 任務DialogInterface.onClickListener()

    理想AlertDialog代碼可能看起來像:

    AlertDialog.Builder builder = new AlertDialog.Builder()     
    builder.setTitle("Hello World") 
    builder.setMessage("India is incredible.") 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
    
        public void onClick(DialogInterface dialog, int id) { 
        // Do something on Positive button click 
        . 
        . 
        } 
        }) 
    .setNegativeButton("No", new DialogInterface.OnClickListener() { 
    
        public void onClick(DialogInterface dialog, int id) { 
        // Do something on Negative button click 
        . 
        . 
        } 
        }) 
    .setOnKeyListener(new OnKeyListener() { 
    
        @Override 
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
         if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { 
          // Do Something on Back key press 
          . 
          . 
         } 
        return false; 
        } 
    }).create().show(); 
    

爲更多細節AlertDialog.Builder方法在這裏看到的參考文檔http://developer.android.com/reference/android/app/AlertDialog.Builder.html