Nella maggior parte dei casi, ho bisogno che l'utente faccia una scelta molte volte. (Faccio qualcosa e sollevo una finestra di messaggio affinché l'utente possa fare una scelta e continuare a fare altro (forse chiamato blocco)) così ho scritto una funzione comuneCome utilizzare il valore di ritorno di AlertDialog
public static void ShowMsgDialog(Context self,String title, String msg)
Sebbene risposta corretta l'azione dell'utente, ma sempre in attesa (che significa mentre si fa clic sul pulsante, il valore della azione precedente è visibile il valore della variabile globale) c'è esiste una funzione che ho potuto ottenere il valore di ritorno della finestra di messaggio e usarlo in questo modo:
int ret = ShowMsgDialog(Context self,String title, String msg);
Il seguire è il mio codice:
public class MainActivity extends Activity {
private Button button1;
enum Answer { YES, NO, ERROR};
static Answer choice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ShowMsgDialog(MainActivity.this, "Information", "you choice? ");
if(choice == Answer.YES)
Toast.makeText(MainActivity.this, "YOU CHOICED YES", Toast.LENGTH_LONG).show();
else if (choice == Answer.NO)
Toast.makeText(MainActivity.this, "YOU CHOICED NO", Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this, "ERROR OCUS", Toast.LENGTH_LONG).show();
//int ret = ShowMsgDialog(MainActivity.this, "Information", "you choice? ");
}
});
}
public static void ShowMsgDialog(Context self,String title, String Msg){
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(self);
dlgAlert.setTitle(title);
dlgAlert.setMessage(Msg);
dlgAlert.setPositiveButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// call your code here
choice = Answer.YES;
}
});
dlgAlert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
choice = Answer.NO;
}
});
dlgAlert.show();
}
}
in funzione diversa, ho intenzione di usare il ritorno della funzione valore. se si utilizza la variabile globale, allora non so quali valori per – George
quale chiamata funzione ha reso il valore della variabile risposta, non so – George
non riesco a capire cosa vuoi dire scusa, puoi scriverlo meglio? : S, ma credo che l'unica soluzione valida per ottenere un valore di ritorno è chiamando un'altra funzione che aggiornerà l'interfaccia utente in base alle proprie esigenze, perché, quando si visualizza un AlertDialog, non è possibile stabilire quando verrà chiusa la finestra di dialogo dall'utente e non è possibile sospendere il thread dell'interfaccia utente e attendere finché non viene restituito un valore da alertDialog. Quindi è necessario utilizzare qualcosa come il mio esempio. – ManosProm