Как дождаться кнопки ввода пользователя, чтобы установить переменную - PullRequest
0 голосов
/ 05 августа 2020

Я пишу класс, в котором есть определенные переменные, которые не нужно устанавливать, за исключением некоторых дополнительных случаев. Таким образом, я работаю над написанием метода requestVariable (), который запрашивает ввод данных пользователем для установки этой переменной, когда это необходимо. Однако я изо всех сил пытаюсь понять, как дождаться этого ввода, прежде чем двигаться дальше. Позвольте мне показать вам, что у меня есть.

SkillApplication AR_D_Atk_Def_1_app = (Unit) -> {
            if (Unit.getAttackStatus() != com.codecademy.myapplication.Unit.AttackStatus.DEFENDER) {
                return;
            }
            else {
                // Make sure structuresAR is set
                Unit.setStructuresAR(requestVariable( /* some parameters */ );

                int X;

                if (Unit.getStructuresAR() >= 5) {
                    X = 4;
                }
                else if (Unit.getStructuresAR() == 4) {
                    X = 3;
                }
                else if (Unit.getStructuresAR() == 3) {
                    X = 2;
                }
                else {
                    X = 1;
                }

                Unit.addCombatAtk(X);
                Unit.addCombatDef(X);
            }
        };

Это лямбда-функция для приложения определенного навыка. Если нужно применить этот навык, он запустит эту лямбда-функцию. Это один из крайних случаев, когда необходимо использовать член "structureAR" модуля Unit. Он используется очень редко, и вместо того, чтобы каждый раз устанавливать его пользователем, я установил его в этой лямбда-функции.

VariableRequest<Integer> requestInteger = (VariableRequest<Integer>) (questionMessage, choices, layout) -> {
            final Integer[] retVal = new Integer[1];

            TextView questionView = new TextView(layout.getContext());
            questionView.setText(questionMessage);

            EditText textEntry = new EditText(layout.getContext());
            textEntry.setInputType(InputType.TYPE_CLASS_NUMBER);

            Button submitButton = new Button(layout.getContext());
            submitButton.setText("Submit");

            layout.addView(questionView);
            layout.addView(textEntry);
            layout.addView(submitButton);

            submitButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    retVal[0] = Integer.parseInt(String.valueOf(textEntry.getText()));
                }
            });


        };

Вот что я написал для этой функции. Он устанавливает вопрос, параметры и кнопку отправки в макет, который обновляет возвращаемое значение тем, что находится в поле ввода при нажатии кнопки.

Эта проблема в том, что это просто продолжается. Остальная часть того, что я написал, будет выполняться, пока onClickListener все еще существует, и я не знаю, как ждать, пока он не будет нажат. Я исхожу из знаний C ++, где просто написание cin >> variable приостановит и подождет, пока вы войдете. Я пытаюсь воспроизвести это с помощью кнопки.

Есть и другие проблемы, которые я могу обнаружить с этим, например, получение макета изнутри метода stati c, но мне трудно придумать другой метод, как Я новичок в разработке Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...