1

私には2つのクラスがあります。1つは標準アクティビティで、もう1つはサービスです。サービス内で発生する特定のイベントのアクティビティのTextViewを(経由で)更新するようにサービスに要求します。.setText()

Activity-Class内でsetter-methodのようなものをプログラミングすることでこれを達成しようとしましたが、TextViewsはstatic-referenceを受け入れません。代わりに、Activity-classのインスタンスを(経由でMyActivityClassName aVariable = new MyActivityClassName();)呼び出そうとすると、呼び出し時に質問のビューが表示されていても、NullPointer例外。

誰かが私が間違っていることを教えてもらえますか:-)?これはおそらくAndroid-oneよりも基本的なJavaの質問ですが、Android-servicesの性質に関係している可能性があるため、android-tagを追加しました。

ご協力いただきありがとうございます!

4

1 に答える 1

3

サービス内で発生する特定のイベントについて、アクティビティのTextViewを(.setTextを介して)更新するようにサービスに依頼します。

より論理的なデカップリングを強くお勧めします。を更新するようにService指示してください。ActivityTextView

これは、ブロードキャストIntentを介して、または呼び出すActivityリスナーオブジェクトを提供することによって行うことができServiceます。Intentいずれの場合も、メモリリークが発生しないように、アクティビティがサービスから切り離されていることを確認してください(リスナーまたはブロードキャストレシーバーの登録を解除してください)。

そしてもちろん、これはアクティビティが実際に実行されている場合にのみ機能します。

于 2009-12-30T23:16:08.527 に答える