2009-12-18 1 views
9

Desidero avviare un'attività all'interno di una schermata popup. Ci sono suggerimenti per un rapido cambiamento?Attività Android all'interno della finestra di dialogo

new AlertDialog.Builder(SearchResults.this) 
     .setTitle("Refine") 
     .setItems(/*catNames*/, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       /* User clicked so do some stuff */ 
       String catName = catNames[which]; 
       String categoryIds = subCats.get(catName); 
      }) 
      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       //do nothing just dispose 
      } 
     }) 
     .create().show(); 

risposta

22

È inoltre possibile applicare questo tema in modo che le attività appare come una finestra di dialogo:

<activity android:theme="@android:style/Theme.Dialog"> 
+0

C'è un modo per fare questa cosa dinamicamente? – user1017674

1

Se tutto quello che vogliamo fare è quello di iniziare l'attività quando l'utente sceglie un elemento dalla finestra di dialogo, si può fare in questo modo:

new AlertDialog.Builder(SearchResults.this) 
        .setTitle("Refine") 
        .setItems(/*catNames*/, new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
            /* User clicked so do some stuff */ 
            String catName = catNames[which]; 
            String categoryIds = subCats.get(catName); 
            Intent intent = new Intent(SearchResults.this,YourActivity.class); 
            startActivity(intent); 
        }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int whichButton) { 
            //do nothing just dispose 
          } 
        }) 
        .create().show(); 

nel metodo onClick() si crea un intento e passarlo al metodo startActivity().

+0

voglio usare intento come vista della finestra di dialogo. –

+0

Hmmm, sono un po 'confuso qui. L'intenzione è un'operazione da eseguire: non è un componente View/ViewGroup, quindi non può essere utilizzato come layout di una finestra di dialogo. Una delle operazioni che possono essere eseguite intenzionalmente è iniziare una nuova attività, quindi forse vuoi impostare il layout personalizzato per una finestra di dialogo? È questo il caso? – Ramps