2

ご存じのとおり、startActivityForResult()親アクティビティからタスクの結果を取得するために使用されます。ここで をクリックするとsetResult(). 結果を親アクティビティに返します。

子アクティビティは、永続的な状態を維持する必要があることを意味します。それは、ユーザーが子アクティビティのボタンをクリックしたときです。そのアクティビティを終了せず、親アクティビティを表示します。また、親アクティビティから子アクティビティに移動する場合があります。子が存在しない場合は、新しい子アクティビティを開始します。それ以外の場合は、既存の子アクティビティを永続的なコンテンツで表示する必要があります。

編集:

簡単に言えば、私の親アクティビティは新しい子アクティビティを開始します。これで、両方のアクティビティが有効になります。子アクティビティを終了せずに親アクティビティを呼び出す方法 (つまり、親アクティビティを前面に移動する方法)? このシナリオでは、

  • 使用できませんstartActivity()。新しいアクティビティ インスタンスを作成するためです。親アクティビティが存在しない
  • 使用できませんstartActivityForResult()。子アクティビティ インスタンスを終了するためです。

それはAndroidで可能ですか?何か案が?

4

3 に答える 3

2

これは Android では不可能です。このようなケースは、アクティビティのライフサイクルでは提供されていません。

単一のアクティビティを再利用し、レイアウトを切り替えるだけで、このような動作をシミュレートできます。アクティビティの状態全体を保存してから、レイアウトを子アクティビティであるレイアウトに変更する必要があります。ユーザーが親アクティビティに戻った場合は、子アクティビティの状態を保存して状態を復元する必要があります。親アクティビティの。また、ユーザーが戻るキーを押して、親アクティビティを開始したアクティビティに戻るのを防ぐために、自分で戻るキーを処理する必要があります。

より簡単な方法は、タブウィジェットを使用して、ユーザーがタブを切り替えられるようにすることです。これにより、2 つの異なるインテントでタブを初期化でき、ユーザーが別のタブに戻った場合にのみ、両方のタブが一時停止されます。

于 2010-09-07T12:20:59.617 に答える
0

を使用してみてくださいFLAG_ACTIVITY_REORDER_TO_FRONT

于 2012-04-20T18:30:22.810 に答える
0

親アクティビティと子アクティビティに異なるtaskAffinity
を設定し、 startActivity(intent) を使用してFLAG_ACTIVITY_NEW_TASKフラグでアクティビティを開始してください。

異なるタスクに属する 2 つのアクティビティにつながるメソッドであり、FLAG_ACTIVITY_NEW_TASK フラグを追加してタスクを切り替えると状態が保持されます。

うまくいくはずだと思います。

于 2010-09-07T15:08:26.377 に答える