3

2 つのアクティビティがあります。最初のアクティビティにはいくつかのレイアウトがあり、2 番目のアクティビティにはスイッチ/トグルがあります。今、私は SharedPreferences を使用できることを知っていますが、あるアクティビティから別のアクティビティを参照できないとは信じがたいです。例: アクティビティ B のアクティビティ A からメソッドを呼び出すにはどうすればよいですか? アクティビティ B のアクティビティ A から textView を変更するにはどうすればよいですか? 同様に、アクティビティ B のボタンを押して、SharedPreferences などを介さずに、アクティビティ A の textView を直接変更します。それを参照する方法はありませんか?私はおそらくこれを行う必要があるだろうし、それが不可能だとは信じられない.

よろしくお願いします。良い一日を!

4

5 に答える 5

1

やりたいことなどを行う次のライブラリを使用できます。それはSquare Inc.からのもので、素晴らしいです。その説明にあるように、「Otto は、アプリケーションのさまざまな部分を切り離しながら、効率的な通信を可能にするように設計されたイベント バスです。

http://square.github.io/otto/

使いたくない場合は、簡単に使用できますBroadcasts。一方からブロードキャストを送信しActivity、もう一方からブロードキャストをキャッチして、それBroadcastReceiverに応じて UI を更新できます。ブロードキャストで Intents を使用してデータを送信することもできるため、Activity正確に何を変更したいのかを相手から理解できます。

于 2013-06-24T16:53:49.873 に答える
1

何が何で、どのように機能するかについて少し誤解しているようですActivities。アクティビティはアプリケーションの「分離された」部分であり、通常は現在のウィンドウとその内容が含まれています。このように使用される各アクティビティは、独自のデータを追跡し、Intentsまたはを使用して他のアクティビティと対話しBroadcastsます。SharedPreferencesあなたが言及したように、アクティビティは、ファイルまたはApplication(またはシングルトン)から共有データにアクセスすることもできます。そのアクティビティが現時点で存在するという保証がないため、別のアクティビティで非静的メソッドを呼び出すことはできません。

2 つの「アクティビティ」を同時にアクティブにし、相互に頻繁にやり取りしたい場合は、おそらくFragments に切り替える必要があります。1 つのアクティビティに複数のフラグメントを含めることができるため、より自由にやり取りできます (アクティビティを介して通信することをお勧めします)。

于 2013-06-24T17:02:59.963 に答える