Как показать активность из стека активности - PullRequest
2 голосов
/ 28 марта 2011

мне нужна помощь по стеку активности.

В моем приложении у меня есть 6 экранов, с которых пользователь может переходить с

  1-->2-->3-->4-->

, когда я перехожу на 4 экран, у меня есть кнопка отмены

когда пользователь нажимает на эту кнопку, он должен перейти на второй экран, и

, когда пользователь нажимает кнопку назад на клавиатуре, он должен переходить на экран 1, который уже был в стеке действий как это сделать..

Пожалуйста, дайте мне пример.

Ответы [ 3 ]

3 голосов
/ 28 марта 2011

Просто используйте FLAG_ACTIVITY_CLEAR_TOP

Когда пользователь нажимает кнопку:

Intent intent = new Intent(ActivityD.this, ActivityB.class);
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Когда пользователь нажимает назад:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent intent = new Intent(ActivityD.this, ActivityA.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
    }
    return super.onKeyDown(keyCode, event);
}

Этот код приведет пользователя к первому действию. Это действие не будет воссоздано из-за FLAG_ACTIVITY_SINGLE_TOP. Когда активность уже находится в обратном стеке, вызывается onNewIntent (), в котором вы можете использовать данные из намерения, например.

Если вы хотите, чтобы в вашей деятельности по умолчанию использовалось такое поведение, поместите эти флаги в декларацию активности Android.

0 голосов
/ 28 марта 2011

// Для Back btn на экране 4

Onclick(View v)
{
if(v==Backbtn)
{
finish();
startActivity(new intent(this,SecondActivity.class));
}
}

// для нажатия кнопки возврата для возврата к 1 экрану

public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            startActivity(new intent(this,FirstActivity.class));
                     return true;
        }
        return super.onKeyDown(keyCode, event);
    }
0 голосов
/ 28 марта 2011

используйте onBackPressed() и механизм намерений для запуска или повторного отображения необходимых действий.

...