Android - Приостановить действие и дождаться ввода пользователя - PullRequest
0 голосов
/ 14 июля 2020

Моя MainActivity начинается с загрузки адреса электронной почты из SharedPreferences. Если его нет, появится всплывающее окно с запросом вашего электронного адреса. Это только при первом запуске.

Но onCreate не ждет, пока это всплывающее окно закроется, и продолжает работать в фоновом режиме. Электронная почта нужна сразу после этого на нескольких позициях. Мое текущее решение - перезапуск приложения вручную.

Как можно приостановить onCreate и дождаться, пока адрес электронной почты не будет введен и не будет нажата кнопка отправки. Можете ли вы проверить, отклонено ли оно или что-то в этом роде?

Многие элементы вырезаны в этих сегментах кода

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        loadEmailAddress();
        if (email.equals("")) {
            setEmailAddress();
        }

        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        View hView = navigationView.getHeaderView(0);
    private void setEmailAddress() {
        final AlertDialog dialogBuilder = new AlertDialog.Builder(this).create();
        LayoutInflater inflater = this.getLayoutInflater();
        final View dialogView = inflater.inflate(R.layout.popup, null);

        Button submit = dialogView.findViewById(R.id.submit);

        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final TextInputLayout layoutEditEmail = dialogView.findViewById(R.id.layout_edit_email);
                String editEmail = Objects.requireNonNull(layoutEditEmail.getEditText()).getText().toString();

                saveEmailAddress(editEmail);
                dialogBuilder.dismiss();
            }
        });
    }
...