2012-02-22 10 views
1

私は3つの選択肢を持つポップアップを作成します。 (ブロック、アンブロック、アンインストール)。私は確認|キャンセルボタンがあります。私はどのボタンが押されているかを見たいと思います。それに基づいて、選択に対応するトーストが表示されます。私は何をしようとしているかを示すためにいくつかのコードを書いています。明らかに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私は;その後私が得る:この行 \tで 複数のマーカー - 私はインナークラス内で非final変数を参照することができません - それが囲む \tタイプ \tに定義されているので、私は、割り当てることができない、最終的なローカル変数を別の方法で定義されている \t方法 – PeterL

+0

これを修正する方法はありますか? – PeterL

+0

グローバル変数にする –

関連する問題