Кнопка вверх не работает правильно в Android 4.0.4

У меня есть основной вид деятельности и детский вид деятельности. Я использую кнопку вверх в детской активности, чтобы вернуться к основной деятельности. В моей деятельности есть анимация, которую я не хочу запускать снова, когда возвращаюсь к ней из дочерней деятельности. Итак, вот домашние действия в детской деятельности:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case android.R.id.home:
            Intent intent = NavUtils.getParentActivityIntent(this);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            NavUtils.navigateUpTo(this, intent);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

И здесь налицо:

 <activity
      android:name=".ChildActivity"
      android:label="@string/app_name"
      android:parentActivityName=".MainActivity" >

      <!-- Parent activity meta-data to support 4.0 and lower -->
      <meta-data
          android:name="android.support.PARENT_ACTIVITY"
          android:value=".MainActivity" />
</activity>

Когда я запускаю его на LG Nexus 5 с Android 4.4.4, он работает нормально, но в Xperia arc с Android 4.0.4 анимация запускается каждый раз, когда я возвращаюсь к основной деятельности. Какое решение?

Обновить:

Я могу добиться того, чего хочу, используя один из следующих способов:

1- Просто звоню finish() когда вверх нажата.

2- Использование Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP при добавлении флага к намерению.

Но я хочу знать, что вызывает эту разницу в поведении в Android 4.4.4 и 4.0.4.

Заранее спасибо!

1 ответ

Для предоставления навигации вы можете использовать NavUtils.navigateUpFromSameTask(this); вместо того, чтобы строить Intent сами, так как это будет правильно обрабатывать флаги, чтобы вернуться к родительской активности.

Другие вопросы по тегам