2012-02-22 2 views
1

3 가지 선택 항목이있는 팝업을 만들고 싶습니다. (차단, 차단 해제, 제거). 아래에는 Confirm | Cancel 버튼이 있습니다. 어떤 버튼을 눌렀는지보고 싶습니다. 그러면이 버튼을 토대로 선택 항목에 해당하는 축배가 표시됩니다. 나는 내가하려고하는 것을 보여주기 위해 몇 가지 코드를 작성했다. 분명히 if 항목 [item] == Block은 작동하지 않지만 단순한 의미로는 내가하려고하는 것입니다. 어떤 버튼을 클릭했는지 캡쳐하기 위해 OnClickListener를 작성하는 방법과 Confirm을 클릭 할 때이를 구분하는 방법을 보여줄 수 있습니까?경고 대화 상자 (라디오 단추)를 사용하여 선택을 결정합니다.

코드 : 그것은 작동해야처럼

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

보인다 그. 나는 문제가있다. (아마 어리석은 질문이다.) 그것은 내가 그것을 만들어야한다고 말한다 최종적인 int i; 하지만 내가 얻을 : 여러 마커를이 줄 \t에서 - 내가 할당 할 수 없습니다 마지막 지역 변수가 클로징 \t 유형에 정의되어 있기 때문에 \t - 내부 클래스 내부가 아닌 최종 i 변수를 참조 할 수 없습니다 다른에 정의 된 \t 방법 – PeterL

+0

그 어떤 문제를 해결하는 방법? – PeterL

+0

전역 변수로 지정 –

관련 문제