向导疑惑

时间:2015-01-11 13:19:53

标签: android

我在我的应用程序中实现了一个显示“向上导航”信息的屏幕。它工作正常,但是当我点击带有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);
  }

2 个答案:

答案 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