finish() не закрывает активити?

Рейтинг: 3Ответов: 1Опубликовано: 18.04.2015

Почему в данном случае finish() не закрывает активити при неудачной попытке?

    try {
            setTextToTextView(jsonArray);
        } catch (NullPointerException e) {
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setMessage("Отсутствует интернет-соединение")
                    .setCancelable(false)
                    .setNegativeButton("ОК",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                    startActivity(new Intent(MainActivity.this,
                                            ActivityChooseCategory.class));
                                    finish();
                                }
                            });
            AlertDialog alert = builder.create();
            alert.show();
        }

В данном случае, если не получается setTextToTextView(jsonArray), то вызывается диалоговое окно и при нажатии на "ОК" должна стартовать ActivityChooseCategory (предыдущая), и закрываться текущая MainActivity.

Этого почему-то не происходит (в стеке остается ActivityChooseCategory. Из этой активити можно выйти из приложения, но почему-то выходить надо столько раз, сколько неудачных попыток было запустить MainActivity).

Так я пытаюсь вернуться на предыдущую активити:

startActivity(new Intent(MainActivity.this, ActivityChooseCategory.class));

Или как-то можно иначе вернуться на предыдущую активити из стека, закрыв при этом текущую?

Ответы

▲ 3Принят

Для finish() и startActivity() нужен контекст , так как это методы активити

@Override
     public void onClick(DialogInterface dialog, int which) {
     Intent intent = new Intent(mContext, ActivityChooseCategory.class);
     mContext.startActivity(intent);
     ((Activity) mContext).finish();
    }

https://stackoverflow.com/a/26682019