好吧,这可能有点简单,但我无法弄清楚如何做到这一点。如何更改此功能以返回String class_name
?我知道我需要将功能从void
更改为String
,但我还需要做什么?
非常感谢!
public void addClass() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Add Class");
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String class_name = input.getText().toString();
}
});
alert.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.show();
}
答案 0 :(得分:2)
返回class_name
值无济于事。您必须实现一个回调方法,该方法获取值并执行所需的操作:
public void addClass() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
// ...
alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
setClassName(input.getText().toString());
}
});
// ...
}
protected void setClassName(String class_name) {
// do what ever has to be done with class_name
}
答案 1 :(得分:1)
你试图有意识地获得的行为(同步对话框)在android中不存在。无论您在单击对话框按钮时想要发生什么,都必须放在OnClickListener.OnClick方法中。
答案 2 :(得分:0)
假设alert.show
在input.getText()
包含输入的值之前未返回,您可以尝试:
public void addClass() {
final Vector<String> retval = new Vector<String>();
retval.add("");
...
...
alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String class_name = input.getText().toString();
retval.set(0,class_name);
}
});
...
...
return retval.get(0);
}
答案 3 :(得分:0)
AlertDialog是异步的,因此无法通过该代码实现您想要实现的目标。 您可以将String class_name设置为全局广告,然后将其初始化为
class_name = input.getText()。toString();
在警告按钮的onClick方法中。