我刚开始使用 Android,我按照本指南将向上导航添加到操作栏上的活动。
http://developer.android.com/training/implementing-navigation/ancestral.html
但是,当我使用操作栏中的向上按钮时的过渡使其显示为打开新活动的淡入过渡,而不是它应该是的淡出,就像按下后退按钮时那样底部。
我该怎么做才能让它显示正确的过渡?谢谢。
我刚开始使用 Android,我按照本指南将向上导航添加到操作栏上的活动。
http://developer.android.com/training/implementing-navigation/ancestral.html
但是,当我使用操作栏中的向上按钮时的过渡使其显示为打开新活动的淡入过渡,而不是它应该是的淡出,就像按下后退按钮时那样底部。
我该怎么做才能让它显示正确的过渡?谢谢。
android:launchMode="singleTop"
在您的 Manifest.xml 中为您的父 Activity声明。
然后,在调用以下内容时,转换将更改为默认淡出:
@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)
您应该使用 navigateUpTo() 方法并将标志无动画设置为意图,如下所示:
final Intent intent = NavUtils.getParentActivityIntent(this);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
NavUtils.navigateUpTo(this, intent);
您将获得“漂亮”的后退动画,以及正确使用向上按钮。this
是当前活动。
@Ciprian 的解决方案对我有用。
此外,navigateUpFromSameTask()
这只是一种等效于调用的便捷方法:
final Intent intent = NavUtils.getParentActivityIntent(this);
NavUtils.navigateUpTo(this, intent);
添加Intent.FLAG_ACTIVITY_NO_ANIMATION
标志时,默认活动淡出转换生效。
我为同样的问题做了很多努力,并设法解决了如下问题:
case android.R.id.home:
onBackPressed();
return true;
每当您按下后退按钮时onBackPressed()
,也会被调用。当按下操作栏后退按钮时调用它只会做同样的事情。
我把它改成了finish(); 这似乎做了我想要的。
它可能会像对我一样令人困惑。但是,我的解决方案只是简单地添加android:launchMode="singleTop"
到所有父母中,而不管父母是否有另一个父母。
希望能帮助到你 :)
您可以使用方法 overridePendingTransition():
在 startActivity(Intent) 或 finish() 风格之一之后立即调用,以指定接下来要执行的显式过渡动画。
http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int , int)