Android:使用navigateUpFromSameTask()时的错误转换

时间:2013-07-29 15:14:05

标签: android android-navigation

我刚刚开始使用Android,我按照本指南将“向上导航”添加到操作栏上的“活动”。

http://developer.android.com/training/implementing-navigation/ancestral.html

然而,当我使用动作栏中的向上按钮时的转换使其显示为打开新活动的淡入过渡,而不是应该是淡出的过程,就像按下后面时一样底部的按钮。

如何才能显示正确的过渡效果? 感谢。

7 个答案:

答案 0 :(得分:16)

在您的Manifest.xml中为您的父Activity声明android:launchMode="singleTop"

当调用类似的内容时,转换将更改为默认淡出:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

(来自:http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp

答案 1 :(得分:11)

你应该使用navigateUpTo()方法并将标志没有动画设置为意图,如下所示:

final Intent intent = NavUtils.getParentActivityIntent(this);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
NavUtils.navigateUpTo(this, intent);

你会感受到很好的'返回动画,并正确使用向上按钮。 this是当前的活动。

答案 2 :(得分:1)

@ Ciprian的解决方案适合我。

此外,navigateUpFromSameTask()只是一种方便的方法,相当于调用:

final Intent intent = NavUtils.getParentActivityIntent(this);
NavUtils.navigateUpTo(this, intent);

当您添加Intent.FLAG_ACTIVITY_NO_ANIMATION标志时,defaut活动淡出转换生效。

答案 3 :(得分:1)

我为同样的问题苦苦挣扎,并设法解决了如下问题:

       case android.R.id.home:
            onBackPressed();
            return true;

每当你按下后退按钮onBackPressed()时也会被调用。按下操作栏后退按钮时调用它只会做同样的事情。

答案 4 :(得分:0)

我把它改成了完成();这似乎做了我想做的事。

答案 5 :(得分:0)

它可能会让我感到困惑。但是,我的解决方案只是将android:launchMode="singleTop"添加到父母的所有,而不管父母是否有其他父母。

希望有所帮助:)

答案 6 :(得分:-1)

您可以使用方法overridePendingTransition():

  

在startActivity(Intent)或finish()的一种风格之后立即调用,以指定下一步要执行的显式转换动画。

http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int,int)