gpt4 book ai didi

android - 如何使用AlertDialog的返回值

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:40:44 25 4
gpt4 key购买 nike

在大多数情况下,我需要用户多次做出选择。(我做某事并提出一个消息框供用户做出选择并继续做其他事情(可能称为 block ))所以我写了一个常用的函数

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();
}



}

最佳答案

我认为没有任何方法可以从 alertDialog 中获取值像这样

int ret = ShowMsgDialog(Context self,String title, String msg);

因为当您的对话框显示时,您的 Button 的 onClick() 已经完成。

所以我建议使用另一种方式来实现它。

由于创建 alertDialog 的方法在您的 Activity 中,因此就像在您的 Activity 中创建一个函数一样简单,如下所示:

public void userChose(String choise){

if(choice == Answer.YES)
//YOUR CODE FOR YES HERE
Toast.makeText(MainActivity.this, "YOU CHOSE YES", Toast.LENGTH_LONG).show();
else if (choice == Answer.NO)
//YOUR CODE FOR NO HERE
Toast.makeText(MainActivity.this, "YOU CHOSE NO", Toast.LENGTH_LONG).show();

}

并在 onClick() 中调用您的方法

像这样:

        dlgAlert.setPositiveButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
userChose(Answer.YES);
}
});
dlgAlert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
userChose(Answer.NO);
}
});

关于android - 如何使用AlertDialog的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17894420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com