Нажмите кнопку «Назад», но не убивайте активность и оставьте ее в Back Stack (Android) - PullRequest
1 голос
/ 08 января 2012

У меня есть 3 действия A, B и C.

Я раздуваю действие B динамически по нажатию кнопки, и пользователь может добавлять столько просмотров, сколько ему нравится.

Операция выглядит следующим образом:

Пользователь видит «Действие А», сначала вводит свои данные и нажимает кнопку «Сохранить», и я беру его в «Действие Б», где он добавляет определенные поля столько раз, сколько разему нравится, и когда он нажимает сохранить снова, я беру его в "Деятельность C".

Теперь, когда я нахожусь в точке A и иду к B, добавляю несколько представлений и вводю текст в TextViews, а затем нажимаю «Сохранить» и переходите к C. От C, если я отвечаю, я вижу B неповрежденным вместе со всеми завышенными представлениями.и ввел текст, очевидно, потому что он сохранен в Back Stack, но если я перейду с B на A, нажав назад, а затем вернусь к B, все представления исчезнут, потому что он удален из Back Stack.

Я хотел знать, возможно ли удерживать только один экземпляр B в BackStack и не уничтожать его вообще, когда пользователь наносит ответный удар?Я переопределил клавишу возврата, но безрезультатно, потому что действие в любом случае прекращается, некоторые люди предлагали мне сохранить все представления и данные из него в Parcelable ArrayList и заново сгенерировать их в onCreate, но мне это кажется неосуществимым, как я думаюв любом случае мы можем сохранить его в BackStack.

Я встречал это руководство у разработчиков Android http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html, в котором говорится об этих атрибутах активности

android:taskAffinity
android:launchMode
android:allowTaskReparenting
android:clearTaskOnLaunch
android:alwaysRetainTaskState
android:finishOnTaskLaunch
android:singleTask
android:singleInstance

Но я не знаю, как их использовать.

Кто-нибудь еще пробовал это?Если это так, пожалуйста, помогите мне собрать кусочки.

Ответы [ 2 ]

1 голос
/ 08 января 2012

Да, я согласен с Nandeesh.

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_BACK:
                //bring back the previous activity do your logic here           
                return false; //means you don't want to remove the activity from stack 
            }
        return super.onKeyDown(keyCode, event);  // means u want to remove the last activity from Activity stack.
    }

    so question  is that how u can go to other activity without remove it from stack, 
    you can use  :
                Intent myIntent = new Intent(CurrentClass.this, JumptoActivity.class);
                 startActivity(myIntent);*

example: at the switch case u can use this

if(KeyEvent.KEYCODE_BACK)
{
                Intent myIntent = new Intent(CurrentClass.this, NextActivity.class);
                 startActivity(myIntent);
                return false;
}
else
    return true;       //if you not write this then your  menu and other think will be affected.

Спасибо, я думаю, что эта небольшая информация будет полезна для вас.

1 голос
/ 08 января 2012
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

        switch(keyCode)
        {
        case KeyEvent.KEYCODE_BACK:
            //bring back the previous activity do your logic here           
            return false;
        }
    return super.onKeyDown(keyCode, event);
}

Вы можете использовать это, возвращать false, когда активность не должна быть закрыта.используйте FLAG_ACTIVITY_REORDER_TO_FRONT для запуска предыдущего действия

...