Android передает метод возврата в функцию - PullRequest
0 голосов
/ 20 марта 2012
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();    
}

Над кодом выдается диалог с кнопками ОК и Отмена. Существует локальная переменная value. Я хочу передать это другому методу. когда я помещаю переменную return + local, он просит меня изменить тип слушателя onclickevent.

Ответы [ 3 ]

3 голосов
/ 20 марта 2012

Ну, да, вы не можете вернуть значение из метода, тип возвращаемого значения которого void. У вас есть два варианта:

  1. Если вам нужно, чтобы это значение оставалось на некоторое время, вы можете сделать value полем своей Деятельности и просто установить его в свой обработчик кликов. Затем вы можете обратиться к нему из других методов в Упражнении.
  2. Если вам нужно только временно использовать его, тогда передайте value в качестве аргумента другому методу, который нужно вызвать, непосредственно из вашего обработчика кликов .
0 голосов
/ 20 марта 2012

Вы не можете изменить тип возвращаемого значения метода.

Совершенно неясно, что вы ожидаете, возвращая значение.Вернуться к кому ??Что должно быть сделано с этой строкой?

Вызывающая сторона получит значение, но вызывающая сторона (положительная кнопка) ничего не ожидает. Код, который вы нам дали, просто говорит положительной кнопке вызвать метод onClick.И кнопка сделает это, но не более того.Кнопка вообще ничего не знает, как реализован ваш метод onClick.

Единственный способ - установить элемент var или вызвать метод с этим значением.

0 голосов
/ 20 марта 2012

Это проблема чистой 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();
..
...