public class DialogWithInputBox extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString().trim(); // important line!
Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show();
return value;
}
});
alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
}
上面的代码给出了一个包含ok和cancel按钮的对话框。有一个局部变量value
。我想将此传递给另一种方法。当我放一个return + local变量时,它要求我更改onclickevent监听器类型。
答案 0 :(得分:3)
嗯,是的,您无法从返回类型为void
的方法返回值。你有两个选择:
value
设置为您的活动字段,并将其设置在您的点击处理程序中。然后,您可以从“活动”中的其他方法引用它。value
作为参数传递给您需要调用的其他方法,直接从您的点击处理程序。答案 1 :(得分:0)
这是一个纯粹的java问题。您可以将值传递给类成员
public class DialogWithInputBox extends Activity {
private String dest;
..
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dest = input.getText().toString().trim();
..
答案 2 :(得分:0)
您无法更改方法的返回类型。
通过返回值完全不清楚您的期望。 回到谁?该字符串应该怎么做?
调用者将获得该值,但调用者(正面按钮)不会期望任何内容 你给我们的代码,只是告诉正面按钮调用方法onClick。 而按钮将会这样做,但仅此而已。该按钮根本不知道你的onClick方法是如何实现的。
唯一的方法是设置成员var或使用该值调用方法。