通过多种功能返回

时间:2010-09-02 05:35:36

标签: java android

好吧,这可能有点简单,但我无法弄清楚如何做到这一点。如何更改此功能以返回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();
}

4 个答案:

答案 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.showinput.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方法中。