2016-04-06 9 views
0

私はAndroid Appを作成しており、非アクティビティクラスの結果を表示する必要があります。 基本的に私のAppは、現在の場所、活動、およびその他のものを取得し、それらの上で私はいくつかの機能を実行します。 とにかく、インテントがこれらの関数をトリガし、関数の最後にこれらの関数の結果をTextViewに更新したいとします。Android:非アクティビティクラスからTextViewを更新する

しかし、MainActivity以外の場所では動作しないようです。私はTextViewを静的にしようとしましたが、動作していないようで、MainActivityから結果をMainActivityに返すことはできません。

この問題を解決する方法がいくつかありますか? これは私の最初のアンドロイドプロジェクトなので、まだ分かりません。ありがとうございました!

+2

することができますを更新[編集]あなたの質問は[mcve]でお願いします。理想的には、定義されているViewクラス(アクティビティなど)の外にあるTextViewを更新しないでください。 –

+0

非アクティビティクラスはどういう意味ですか? – Pooya

答えて

0

コードがどのようになっているかわかりませんが、すべてのデータ(たとえば、何らかのシングルトン)を保持するモデルクラスはありますか?もしそうなら、そこに更新されたテキストを保存し、コールバックメソッドでTextViewを更新するだけです。

これがあなたの行っていることに合わない場合は、あなたのコードをリファクタリングして、あなたが望むテキストがあなたのMainActivityに送り返されるようにすることを検討します。あなたは、メソッドが直接呼び出されていないと言いましたが、計算結果をテキストを中間クラスに渡してMainActivityに渡すことができますか?

+0

これまでの回答に感謝します。 もう少し詳しく説明しよう! 私のMainActivityクラスでは、(インテントを介して)非常に細かい信号を取得するいくつかのクラスをインスタンス化します。たとえば、現在の場所を取得するGPSクラス。次に、onHandleIntent()は、別の呼び出しから関数を呼び出します。これらの値に基づいて計算を行います(たとえば、その人がその場所にいたかどうかを確認するなど)。 そしてこの関数の結果を表示します。 これで少し明確になることを願っています。私はコードを投稿するだろうが、私は本当に何を投稿するのか分からない。 – Leni

0

ui dromのバックグラウンドスレッドは更新しないでください。 バックグラウンドスレッドからUIを更新する場合は、Handlers、AsyncTaskを使用するか、他のスレッドの概念を使用します。

あなたは例えばのためのサービスや放送受信機あちこちにUIを更新したい場合は、UIを使用sendBroadcastを更新するために、今broadcasrReceiverのonReceive内のメッセージを受け取り、自分のアクティビティ内の動的放送受信機をregistet、その後