В большинстве случаев мне нужно, чтобы пользователь делал выбор много раз. (Я что-то делаю и поднимаю окно сообщения для пользователя, чтобы сделать выбор и продолжать делать что-то другое (может быть, он называется block)) Так что я написал общую функциюКак использовать возвращаемое значение 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, нет возможности сказать, когда диалог будет закрыт от пользователя, и вы не можете просто приостановить поток пользовательского интерфейса и дождаться возврата значения из alertDialog. Поэтому вам нужно использовать что-то вроде моего примера. – ManosProm