0

主に 2 つのアクティビティを使用するアプリケーションがあります。ListView を含む最初の ListActivity を呼び出し、もう 1 つを 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 に答える