2013-09-25 1 views
1

У меня возникла проблема, и после многих попыток, я думаю, я не мог ее решить. Надеюсь, кто-то может мне помочь. Теперь следующая моя ситуация:
Деятельность Начало работы B, а активность B начинается сама (но содержимое в действии B изменилось, и этот шаг может произойти много раз). Теперь, когда я нажимаю клавишу «назад», как я могу напрямую перейти к Activity A. это мой код:android intent.FLAG_ACTIVITY_CLEAR_TOP не работает

Intent intent = new Intent(QuestionNaireActivity.this, 
          QuestionNaireActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(intent); 

Я имел попробовать следующее:
1. использование Intent.FLAG_ACTIVITY_SINGLE_TOP, это действительно идут на деятельность прямо, но когда B перейти к B содержание не меняется.
2. Использование Intent.FLAG_ACTIVITY_CLEAR_TOP, когда Гото активность А, он сообщает о BUG, ​​как следующее:

java.lang.RuntimeException: Failure delivering result ResultInfo 
{who=null, request=1000, result=0, data=null} to activity {com.snt.dauditapp/com.snt.dauditapp.Activity.SubTabFragments.QuestionnaireNavigationDetailActivity}: 
    java.lang.NullPointerException 

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

+0

Если вы получаете исключение NullPointerException, вполне вероятно, что существует другая основная проблема. Следуйте номеру строки для этого NPE и убедитесь, что обновленный фрагмент/активность не будет аварийно завершен. – Shellum

ответ

0

Как вы ищете

как Могу ли я перейти на активность А непосредственно

использовать следующие по активности В

@Override 
    public void onBackPressed() { 

     Intent i = new Intent(this, 
          ActivityA.class); 
       i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i); 
    } 
0

Используя флаг CLEAR_TOP, вы удалите все предыдущие действия из стека после перехода к новому действию. Если вы хотите использовать нормальное поведение «назад», в котором щелчок назад возвращается к предыдущему действию, вам не нужно указывать какие-либо флаги в намерении. Это функциональность по умолчанию.

Мое предложение: всегда начинайте с деятельностью А. Если вам необходимо перейти непосредственно к B, убедитесь, что задание А незамедлительно направляет вас к B. Таким образом, нажав назад в B всегда будет возвращать вас к А.

Надеюсь, это поможет.

+0

thx для вашего answer.but мое условие: я не всегда могу начать B с A. просто, например: это экзамен parper, когда вы отвечаете на вопрос один, тогда вы можете перейти к следующему вопросу (вопрос в этом примере как и активность B, и есть много B.activity A - страница входа) –

+0

Это нормально. Я хотел сказать, что даже если вы должны начать с B, используйте A для автоматического перехода на B. В противном случае A может перейти к B, а B может бесконечно переходить к себе. Если вы сделаете это так, вы можете положиться на функциональность назад, чтобы всегда приводить вас к предыдущему действию в стеке. Просто удалите вызов setFlags. Это должно сработать для вас. –

+0

Прошу прощения, я все еще не могу отказаться. canyou дать мне код? –

0

попытайтесь завершить свое старое действие B при вызове нового. Как это ...

Intent intent = new Intent(QuestionNaireActivity.this, QuestionNaireActivity.class); 
startActivity(intent); 
finish(); 
Смежные вопросы