1

私は現在、クアドロコプター用のテレメトリー アプリとして Android アプリケーションを開発しています。ネットワーク経由でデータを送信するudpサーバーがあります。

ネットワーク接続を処理するために別のスレッドにある udp クライアントがあります。私の ConnectActivity では、次のようにオブザーバーを追加しています。

Observer dataView = new DataViewActivity();
Observer osmDroidView = new OSMDroidMapsActivity();

udpClient.getDataNotifier().addObserver(dataView);
udpClient.getDataNotifier().addObserver(osmDroidView);

私の OptionsMenu では、たとえば DataViewActivity を開始します。

MenuItem dataItem = menu.add("Data");
dataItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

DataViewActivity は、Observer インターフェイスを実装します。今私の問題は、オブザーバーリストに追加しているデータビューインスタンスが、オプションメニューをクリックして開始したデータビューとは別のインスタンスであることです。オプションメニューから同じインスタンスを開始する方法はありますか?

startActivity(new Intent(getApplicationContext(),
                DataViewActivity.class));
4

1 に答える 1

1

new Activity()どんな種類のものも絶対に使用しないでください。何を使用しても、startActivity 呼び出しを実行することによってのみアクティビティを開始する必要があります。現在のアクティビティは Observer インターフェイスを実装し、通知を受け取ったときに新しいアクティビティを開始する必要があります。アクティビティを作成/保存することはできません - それはフレームワークの仕事です

于 2012-11-16T19:47:46.880 に答える