Как я могу переключаться между существующими действиями? - PullRequest
1 голос
/ 23 сентября 2011

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

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

Для этого я начинаю новое занятие. Теперь у меня есть то, что, если пользователь нажимает кнопку «перевести» одной и той же статьи несколько раз, будет куча повторяющихся действий.

Что мне нужно сделать, так это то, что когда пользователь сначала «переводит» русскую статью на английский, а затем нажимает кнопку «перевести» в английской статье, приложение возвращает его к существующему действию, отображающему русскую статью, и не запускает новое действие. Вот код, который не делает то, что мне нужно, чтобы проиллюстрировать мои попытки.

intent.putExtra("BookID", strBookID );
        intent.putExtra("ChapterNum", mCurrChapterNum );
        intent.putExtra("TextNum",   mCurrTextNum );

        try{                        
            if (Central.LastBookID.equals(""))
            {   //remember current article id
                Central.LastBookID=strBookID;
                Central.LastChapter=mCurrChapterNum;
                Central.LastText=mCurrTextNum;
            }
            else
            {
                if (Central.LastChapter.equals(mCurrChapterNum) &&
                        Central.LastText.equals(mCurrTextNum) )
                    intent.addFlags(Intent. FLAG_ACTIVITY_REORDER_TO_FRONT);
            }
            startActivity(intent);

Пожалуйста, дайте мне несколько советов, может быть, было бы лучше реализовать это по-другому? Из того, что мне удалось прочитать, Android не имеет никаких «идентификаторов действий», поэтому, если у меня в стеке есть 2 действия одного и того же класса «A», но с разными параметрами, такими как (A1 A2), я мог бы сказать системе принести перейти к деятельности A1 и сделать это (A2 A1)

1 Ответ

3 голосов
/ 23 сентября 2011
 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

использование вышеуказанного флага вместо этого завершает предыдущий и запускает новый. так что нет кучи деятельности и лишней логики.

...