0

Observable オブジェクト foo を内部に持つ Activity を持つ単純な Android アプリケーションがあります。update に渡された引数で GUI を更新するアクティビティに Observer を実装するプライベート 内部クラスがあります。アクティビティを作成するときに、オブザーバーを foo.addObserver でアタッチします。

ただし、私のオブザーバーは一度だけ通知され、それ以上更新を受け取りません。foo に足を踏み入れましたが、オブザーバーが 2 番目の通知を送信しようとすると、オブザーバーが削除されます。誰もこれを経験したことがありますか?何が原因でしょうか? これ以上トラブルシューティングする方法がわかりません。これはとても簡単に思えます。これ以外に、私が行っていることが原因である可能性がありますか? 誰かアイデアがあれば、私のアプリケーションをもっと公開できます。

これに関連するコードは次のとおりです(パラメーターとスコープはありません)

アクティビティ

onCreate
  ...
  foo = new Foo();
  foo.addObserver( new FooObserver() );
  ...

class FooObserver implements Observer {
  update()
    updateGUI();

フー

arbitraryMethod()
   ...
   setChanged();
   notifyObservers( argument );
4

1 に答える 1

0

私が抱えていた(恥ずかしい)問題は、Fooの複数のインスタンスがあり、オブジェクトの複数のインスタンスを作成したことを覚えておらず、オブジェクトの特定のインスタンスのリスナーのみを登録していたことです。これが、オブザーバーの配列が空だった理由です最初の更新後。別の物体を見ていました!

これには多くの解決策がありますが、私の場合にうまくいくのは、オブジェクトをシングルトンにすることです。

于 2012-08-11T04:56:26.003 に答える