Есть ли способ завершить текущее действие с помощью кнопки оповещения? - PullRequest
0 голосов
/ 08 ноября 2019

У меня проблемы с созданным ящиком предупреждений. Мое намерение состояло в том, чтобы перезапустить или завершить действие моей страницы изменения активности с помощью окна предупреждения. Однако наличие finish(); не работает и выдает ошибку волнистой линии.

Есть ли способ завершить текущее действие с помощью кнопки окна предупреждения без ошибок?

CreateCancelDialog. Java

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatDialogFragment;

public class CreateCancelDialog extends AppCompatDialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builderDialogCancel = new AlertDialog.Builder(getActivity());
        builderDialogCancel.setTitle("Confirm Cancellation");
        builderDialogCancel.setMessage("Are you sure you wish to return to the main screen?");
        builderDialogCancel.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                callMainPage();
            }
        }) .setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                getDialog().cancel();
            }
        });

        return builderDialogCancel.create();
    }

    private void callMainPage() {
        Intent intent = new Intent(getActivity(), GPIMainUI.class);
        startActivity(intent);
        finish(); //gives out squiggly line
    }
}

Редактировать: Я знаю, что коды ниже работают в нормальном режиме. НО это не работает в диалоге предупреждения.

Intent intent = new Intent(this, ChangePassword.class);
finish();
startActivity(intent);

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Попробуйте позвонить: getActivity().finish(); вместо finish();

0 голосов
/ 08 ноября 2019

Мне удалось решить проблему ... Webfreak дал мне подсказку по решающей части. Кредиты для Webfreak.

builderDialogCancel.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            callMainPage(getActivity());
        }
    })

private void callMainPage(Context context) {
    Intent intent = new Intent(getActivity(), GPIMainUI.class);
    startActivity(intent);
    ((Activity)context).finish();
}
...