2011-11-18 18 views
5

Estoy creando un cuadro de diálogo de alerta al principio de mi aplicación para permitirle al usuario elegir dónde almacenar los datos que mi aplicación está descargando de la web. Lo que quiero lograr ahora depende del tamaño del almacenamiento interno/externo que quiero configurar, seleccionado uno de los elementos. Aquí está el código que estoy usando para crear el diálogo:Android establece el elemento seleccionado en el cuadro de diálogo de alerta

@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(); 
} 

Y otra cosa que quiero lograr, ¿cómo puedo evitar que el usuario para cerrar el diálogo de alerta si él no eligió ningún artículo. No quiero cerrar el diálogo al presionar el botón Atrás o cuando hace clic en el botón Aceptar. Cualquier idea/sugerencia/ayuda son bienvenidas!

Respuesta

17

hacer algo como esto:

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

para el botón de cierre se puede definir el botón de cancelación con el visto bueno al igual que de esta manera

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 
     } 
}); 

para el artículo seleccionado puede supeditar la ruleta como locales definen para esta clase o se puede asignar este valor a cualquier variable como seleccionado

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

ahora se puede establecer el valor predeterminado por esto y obtener el valor de cuando se hace clic en el botón Aceptar del cuadro de diálogo

builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
      // here get the selected item value 
    } 
}); 
Cuestiones relacionadas