0

我有一个主要使用两个活动的应用程序,我们将调用第一个 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。

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

4

1 回答 1

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);
}

我希望这可以帮助别人!

于 2013-09-21T18:00:00.597 回答