2011-11-18 8 views
5

私は、アプリケーションの開始時に警告ダイアログを作成して、アプリケーションがWebからダウンロードしているデータをどこに保存するかを選択できるようにします。ここで達成したいのは、内部/外部ストレージのサイズに依存します。選択したアイテムを設定したいと思います。Androidが警告ダイアログで選択した項目を設定しました

@SuppressWarnings("static-access") 
public void createDialog(){ 


    final CharSequence[] items = {"Phone Memory - "+memorysize+" free space", "SD Card - "+megAvailable+" MB free space"}; 

    final int userId = rpc.getUserId(this); 
    final String servername = rpc.getCurrentServerName(this); 

    SharedPreferences stampiiSettings = PreferenceManager.getDefaultSharedPreferences(MyCollectionList.this); 
    final SharedPreferences.Editor editor = stampiiSettings.edit(); 

    AlertDialog.Builder builder = new AlertDialog.Builder(this.getParent()); 
    builder.setTitle("Select Storage Path"); 
    builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 

      if(item == 0){ 

       rpc.createFoldersInInternalStorage(servername, userId, MyCollectionList.this); 
       Toast.makeText(getApplicationContext(), "Selected Storage Path : Phone Memory", Toast.LENGTH_SHORT).show(); 
       editor.putInt("storagePath", 1); 
       editor.commit(); 
      } else if (item == 1){ 

       rpc.createFoldersInExternalStorage(servername, userId, MyCollectionList.this); 
       Toast.makeText(getApplicationContext(), "Selected Storage Path : SD Card", Toast.LENGTH_SHORT).show(); 
       editor.putInt("storagePath", 2); 
       editor.commit(); 
      } 
     }}); 

     builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
       mHandlerUpdateUi.post(mUpdateUpdateUi); // update UI    
     } 
     }); 
     AlertDialog alert = builder.show(); 
} 

そして、私は達成したい他の事、彼は任意の項目を選択しなかった場合はどのように私は警告ダイアログを閉じるには、ユーザーを防ぐことができます:ここで私は、ダイアログを作成するために使用しているコードがあります。戻るボタンを押したとき、または[OK]ボタンをクリックしたときにダイアログを閉じたくない。任意のアイデア/提案/助けが歓迎されています!

答えて

17

ダイアログボックスの[OK]ボタンをクリックしたときの値を取得することができます:

int selected = 0; // or whatever you want 
builder.setSingleChoiceItems(items, selected, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int item) { 
       //onclick 
    }}); 
3

ボタンを閉鎖するために、あなたがローカルとしてスピナーは、このクラスに定義することができますいずれか

選択した項目の
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // no need to write anything here just implement this interface into this button 
     } 
}); 

この方法のように[OK]をクリックして、ボタンをキャンセルしたり、任意の変数にこの値を割り当てることができます定義することができます選択されたような

int selected = 0; // if you want in integer or 
String selected = "internal"; // you can go with string 

今はこれにデフォルト値で設定され、このようなものですか

builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
      // here get the selected item value 
    } 
}); 
関連する問題