我在我的应用程序中实现了一个显示“向上导航”信息的屏幕。它工作正常,但是当我点击带有ActionBar上箭头的图标时,它不是返回效果,就像当我点击返回箭头Smarthphone本身时,而是一个效果,好像我已经开始了一个新的Activity。我想知道是否有人可以帮我解决这个问题。
我的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// é aqui que você volta para a activity ou fragment anterior
Intent parentActivityIntent = new Intent(this, MainActivity.class);
// Remove todas as outras activitys que estão na pilha
parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
break;
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:0)
此按钮的操作可以在
中实现 onOptionItemSelected()
你可以找到它的id为android.R.id.home
您可以采取的行动
if(item.getItemId()==android.R.id.home)
{
//Your action
}
答案 1 :(得分:0)
您在新任务中开始新意图,这就是系统动画与按下时不同的原因。
当您按下向上按钮时,您已在android.R.id.home
收到onOptionsItemSelected
事件,因此您已正确设置主页按钮。
您应该在清单中添加android:parentActivityName
属性(API 16+请参阅下面的开发人员文档链接以获得向后兼容性)。
这会将您当前的活动与家长联系起来。您还需要使用NavUtils课程对navigateUpFromSameTask(this)
进行正确的onClick操作,其中this
是您当前的活动。
developer documentation明确了如何正确实施;如果遵循规定的模式,将免费提供返回过渡效果。
另外,在您的代码中,您应该return true
而不是break
(因为您不在循环中,所以不会做任何事情)。返回true
表示您已处理了该事件onOptionsItemSelected
。