Кнопка вверх не работает правильно в 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
сами, так как это будет правильно обрабатывать флаги, чтобы вернуться к родительской активности.