Trong hầu hết trường hợp, tôi cần người dùng thực hiện nhiều lựa chọn (tôi làm điều gì đó và nâng cao hộp thư để người dùng lựa chọn và tiếp tục làm việc khác (có thể được gọi là chặn))) Vì vậy, tôi đã viết một chức năng chungLàm thế nào để sử dụng giá trị trả về của AlertDialog
public static void ShowMsgDialog(Context self,String title, String msg)
Mặc dù hưởng ứng một cách chính xác hành động của người dùng, nhưng luôn luôn xem xét (có nghĩa là trong khi tôi nhấp vào nút, giá trị hành động trước đó có thể nhìn thấy bằng giá trị toàn cầu biến của) có tồn tại bất kỳ chức năng nào mà tôi có thể nhận được giá trị trả về của hộp thư và sử dụng nó như sau:
int ret = ShowMsgDialog(Context self,String title, String msg);
tiếp theo là mã của tôi:
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();
}
}
chức năng khác nhau, tôi có ý định sử dụng trả về của hàm giá trị. nếu sử dụng biến toàn cục, thì tôi không biết giá trị nào cho – George
gọi hàm nào làm giá trị của biến trả lời, tôi không biết – George
tôi không thể hiểu ý của bạn là gì, bạn có thể viết nó tốt hơn không? : S, nhưng tôi tin rằng giải pháp hợp lệ duy nhất để có được giá trị trả về là bằng cách gọi một hàm khác sẽ cập nhật giao diện người dùng của bạn theo nhu cầu của bạn, bởi vì khi bạn hiển thị AlertDialog thì không có cách nào để biết khi nào hộp thoại sẽ đóng từ người dùng và bạn không thể chỉ tạm dừng Giao diện người dùng và đợi cho đến khi một giá trị từ alertDialog được trả về. Vì vậy, bạn cần phải sử dụng một cái gì đó giống như ví dụ của tôi. – ManosProm