Android传递方法返回一个函数

时间:2012-03-20 10:36:16

标签: android return-value alertdialog

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监听器类型。

3 个答案:

答案 0 :(得分:3)

嗯,是的,您无法从返回类型为void的方法返回值。你有两个选择:

  1. 如果您需要此值保持一段时间,可以将value设置为您的活动字段,并将其设置在您的点击处理程序中。然后,您可以从“活动”中的其他方法引用它。
  2. 如果您只需要暂时使用它,请将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或使用该值调用方法。