0

バックスタックに 10 個のアクティビティがあるとします。バックスタックの 10 番目のアクティビティ (アクティビティ A のインスタンス) の変更が、バックスタックの 2 番目のアクティビティ (アクティビティ A のインスタンスでもある) の変更をトリガーする方法を教えてください。

使用できない理由StartActivityForResultは、変更が n 番目のアクティビティで発生する可能性があるためです。を使用してデータを逆方向に送信し続けることはできませんonActivityResult

また、同じアクティビティのインスタンス数が少ないため、静的データを使用できません。

実際のシナリオ:

Twitter の場合、リスト内のユーザーをフォローするオプションを備えたフォロワー リストがあり、 1 人を選択してそのフォロワー リストに移動すると、すべてのユーザーのフォロー オプションが表示されます。

では、バックスタックの 10 番目のリストでユーザーをフォローすると、同じユーザーを含む 1 番目のリストにどのように反映されるのでしょうか? つまり、フォローからフォローに変更する必要があります。

4

2 に答える 2

0

アクティビティとは別の方法でデータを保存する必要があります。通常、これは sqlite データベースを介して行われます。基本的な考え方は、使用者が記録したいアクションを実行したときに、何らかの方法で保存することです。おそらくデータベースにあります。これで、データが保存され、アクセスできるようになりました。

次のステップは、アクティビティで更新されたデータを表示する方法です。これは通常、 で行われActivity#onResume()ます。onResume では、保存されたデータを取得して表示を更新できるいくつかのアクションを実行します。startActivityForResultその名前が意味するものに多かれ少なかれ使用されます。呼び出し先が呼び出し元にデータを提供する目的で、別のアクティビティを開始します。アクティビティ スタックを介してデータと状態を送信しようとする場合には使用されません。

于 2013-08-06T06:56:49.650 に答える
-1

startActivityForResult を使用したくない場合は、各アクティビティの静的インスタンスを作成して、他のアクティビティからアクセスできるようにする必要があります。例:-

public class xyz extends Activity {

 private static xyz instance;

 public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       ................
       ................
       instance = this; 

 }

 public static xyz getInstance(){
       return instance;
 }

}

于 2013-08-06T06:12:46.320 に答える