在Android中使用滑动过渡进行导航

时间:2013-09-21 14:34:49

标签: android android-activity

我有一个主要使用两个活动的应用程序,我们将调用第一个ListActivity,因为它包含ListView,另一个我们将调用InfoActivity。在ListView上单击某个项目时,应使用滑动过渡使InfoActivity处于活动状态,我已按如下方式实现

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
  //store the id of the item that was clicked
  PlacesHelper.tappedId = position;
  Intent i = new Intent(ListActivity.this, InfoActivity.class);
  startActivity(i);
  finish();
  overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
}

当我点击某个项目并查看它时,过渡效果非常好。但是,使用后退按钮或向上按钮(因为ListActivity是InfoActivity的父级)会导致两个活动消失(不使用滑动过渡)并返回到LoadingActivity。

是什么导致这种情况发生?我实施过渡是否存在严重问题?

1 个答案:

答案 0 :(得分:0)

啊,啊,我懂了!调用finish()显然会从内存中删除Activity,所以我不得不删除该行。

ActionBar中的向上按钮和后退按钮仍然没有进行滑动过渡,但是通过覆盖backPressed()和onOptionsItemSelected()并使用overridePendingTransition()可以很容易地解决这个问题。

最终代码:

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
  //store the id of the item that was clicked
  PlacesHelper.tappedId = position;
  Intent i = new Intent(ListActivity.this, InfoActivity.class);
  startActivity(i);
  overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
}

我希望这有助于某人!