我正在使用AlertDialog.Builder来显示一个对话框来提示用户输入密码,然后我想将该密码保存在首选项中,但是我无法弄清楚如何从警报对话框的输入中获取结果方法。如何从AlertDialog获取结果?
这里基本上是我想什么能够做到:
String result;
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setTitle("Please enter a password");
final EditText input = new EditText(this);
b.setView(input);
b.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int whichButton)
{
//I get a compile error here, it wants result to be final.
result = input.getText().toString();
}
});
b.setNegativeButton("CANCEL", null);
b.create().show();
不过,我愿意做一些诸如showDialog(int);
然后使用onCreateDialog(int)
方法并以某种方式设置的结果,在一些接受它其他方法,但我不知道如何去做最后一部分。
对不起,我不太明白是怎么回事,或者我怎么会用这个来实现我想要实现的。 – finiteloop 2011-05-10 17:09:26
@segfault,编辑我的回答 – evilone 2011-05-10 17:28:09
evilone建议您使用Observer模式并创建您自己的侦听器(TextListener)。然后,包含此AlertDialog的活动可以实现TextListener,它将调用AlertDialog外部的onPositiveResult(CharSequence),并且它会根据您的问题传递您正在查找的结果。然后,您可以根据自己的意愿采取行动。 – 2011-05-10 17:32:00