2012-02-22 91 views
1

我有一個彈出我想創建,將有3個選擇。 (阻止,取消阻止,卸載)。下面我有一個確認|取消按鈕。我想查看哪個按鈕被按下,並基於該按鈕將顯示與選擇對應的烤麪包。我寫了一些代碼來顯示我正在嘗試做什麼。很明顯,如果項目[項目] ==塊將不起作用,但在簡化的意義上,這是我想要做的。有人能告訴我如何編寫OnClickListener來捕獲單擊按鈕以及單擊確認時如何區分它?確定選擇使用警報對話框(單選按鈕)

代碼:

package com.popup; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 



public class PopupActivity extends Activity { 


    String TAG = "PopUpActivity"; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     BlockUnblockUninstallPopUp(""); 
     String TAG = "PopUpActivity"; 
    } 
    public void BlockUnblockUninstallPopUp(final String PackageName){  
     //Items you would like to list as options. 
     final CharSequence[] items = {"Block", "UnBlock", "Uninstall"}; 
     String flag = null; 
      AlertDialog.Builder builder = new AlertDialog.Builder(PopupActivity.this); 

     //Title of Popup 
      builder.setTitle("What would you like to do?"); 

      builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { 
     //When you click the radio button 
       public void onClick(DialogInterface dialog, int item) { 

       } 
      }); 

     //When you click Confirm 
      builder.setPositiveButton("Confirm", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int item) { 
        if(items[item] == "Block") 
        { 
       Toast.makeText(PopupActivity.this,PackageName + " Blocked.", Toast.LENGTH_SHORT).show(); 
       Log.d(TAG,PackageName + " Blocked."); 
        } 
        if(items[item] == "Unblock") 
        { 
       Toast.makeText(PopupActivity.this,PackageName + " Unblocked.", Toast.LENGTH_SHORT).show(); 
        Log.d(TAG,PackageName + " Unblocked."); 
        } 
        if(items[item] == "Uninstall") 
        { 
        Toast.makeText(PopupActivity.this,PackageName + " Uninstalled.", Toast.LENGTH_SHORT).show(); 
       Log.d(TAG,PackageName + " Uninstalled."); 
        } 
      } 
      }); 
     //When you click Cancel, Leaves PopUp. 
      builder.setNegativeButton("Cancel", 
      new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
      } 
      }); 
     //Creates the AlertDialog 
      AlertDialog alert = builder.create(); 

     //Starts the Popup. 
      alert.show(); 


     } 

} 

回答

5
int i; 
    builder.setSingleChoiceItems(items, -1, 
        new DialogInterface.OnClickListener() { 
         // When you click the radio button 
         public void onClick(DialogInterface dialog, int item)     { 

           i=item; 
         } 
        }); 

    builder.setPositiveButton("Confirm", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int item) { 

         if (items[i] == "Block") { 
          Toast.makeText(PopupActivity.this, 
            PackageName + " Blocked.", 
            Toast.LENGTH_SHORT).show(); 
          Log.d(TAG, PackageName + " Blocked."); 
         } 
         if (items[i] == "UnBlock") { 
          Toast.makeText(PopupActivity.this, 
            PackageName + " Unblocked.", 
            Toast.LENGTH_SHORT).show(); 
          Log.d(TAG, PackageName + " Unblocked."); 
         } 
         if (items[i] == "Uninstall") { 
          Toast.makeText(PopupActivity.this, 
            PackageName + " Uninstalled.", 
            Toast.LENGTH_SHORT).show(); 
          Log.d(TAG, PackageName + " Uninstalled."); 
         } 
        } 
       }); 
+0

這似乎是它應該工作。我有一個問題(可能是一個愚蠢的問題)。它說我需要做它 Final int i;但後來我得到: 多個標記在該行 \t - 最後的局部變量i不能分配的,因爲它是在一個封閉的 \t類型定義 \t - 不能指非最終變量i的內部類中定義在不同的 \t方法 – PeterL 2012-02-22 21:46:32

+0

任何想法如何解決? – PeterL 2012-02-22 21:47:02

+0

使其成爲全球變量 – 2012-02-22 21:48:32

相關問題