ほとんどの状況で、何度も選択する必要があります(何かを行い、選択肢を作って他のことを続けるメッセージボックスを表示しますそれは正しく、ユーザーのアクションを応答が、常に私はボタンをクリックしながら、それが意味(保留が)) は、だから私は、前のアクションの値が があります)グローバル変数の値で表示されている一般的な機能AlertDialogの戻り値の使用方法
public static void ShowMsgDialog(Context self,String title, String msg)
を書きましたメッセージボックスの戻り値を得ることができる関数が存在し、このように使用します。
int ret = ShowMsgDialog(Context self,String title, String msg);
フォローは私のコードです:
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();
}
}
別の関数で、私は、関数の戻り値を使用します値。グローバル変数を使用する場合、関数呼び出しが応答変数の値を作った – George
の値がわからない場合は、 – George
私はあなたが良いことを理解することができません、あなたはそれを良く書くことができますか? :S、しかし、私は戻り値を取得する唯一の有効なソリューションは、AlertDialogを表示すると、ダイアログが閉じられるときに通知する方法がないため、あなたのニーズに応じてUIを更新する別の関数を呼び出すことであると信じていますUIスレッドを一時停止してalertDialogの値が返されるまで待つことはできません。だから私の例のようなものを使う必要があります。 – ManosProm