我是一个新的Android开发者,可能有一个愚蠢的问题 在我的活动创建中,我想制作一个弹出对话框以提示用户输入。然后我想获取该输入并将其保存为全局变量供以后使用。目前我有
public class MgenActivity extends Activity {
// Instance Variables
String ip = "";
/**
* On Create
*/
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String box = dialogBoxStart();
this.ip = box;
//more code
}
public String dialogBoxStart()
{
String returned = "";
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("MGEN Setup");
alert.setMessage("Please enter the MGEN IP address such as \n 9.42.68.69");
// Set an EditText view to get user input
final EditText input = new EditText(this);
alert.setView(input);
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
//send user input to global?
//this doesnt work: this.ip = input.getText().toString();
}
};
alert.setPositiveButton("Ok", listener);
alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
returned = input.getText().toString();
alert.show();
return returned;
}
问题是我的EditText'输入'没有保存用户输入,所以我无法向外保存。同样,我无法从我的onClick方法中与外部变量交谈。
所以TLDR:你如何从对话框中保存输入?
答案 0 :(得分:1)
就这么简单。
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
ip = input.getText().toString();
}
};
答案 1 :(得分:0)
Dialog不会阻止代码执行或UI线程。您显示对话框,用户单击确定按钮,您将值设置为全局变量,但您使用它的代码已经执行。您目前的实施情况也是如此。 dialogBoxStart()返回空值,因为它在用户输入任何内容之前获取输入值。
请检查此问题:Dialogs / AlertDialogs: How to "block execution" while dialog is up (.NET-style)
答案 2 :(得分:0)
new AlertDialog.Builder(Main.this)
.setTitle("Update Status")
.setMessage(message)
.setView(input)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Editable value = input.getText();
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Do nothing.
}
}).show();