1

現在、クリック情報ウィンドウでGoogleマップマーカーをwifiに接続する作業を行っているため、アクセスポイントにログインするためのカスタムアラートダイアログアクティビティがあります。そのダイアログアクティビティから、マーカーパラメーターを使用して接続メソッドをコールバックする必要があります。wificonnector(m)その新しいクラスで呼び出したい場合、Marker m パラメータを新しいアクティビティに渡しますか? ここでは機能していputextraないようです

public void wificonnector(Marker marker) 
        {...}

@Override
public void onInfoWindowClick(Marker m) {

Intent i = new Intent(myMap.this, ConnectDialog.class);
i.putExtra("marker",m);                  
startActivity(i);
}
4

3 に答える 3

1

に ssid が必要な場合ConnectDialogは、全体ではなくその値を送信してみませんMarkerか?

Intent i = new Intent(myMap.this, ConnectDialog.class);
String ssid = m.getSnippet(); // or title, depending on where you store ssid
i.putExtra("ssid",ssid);
startActivity(i);

Markerオブジェクトはオブジェクトのように扱う必要がありViewます。それらをコンテキスト外に送信しようとすると、メモリ リークが発生します。

于 2013-09-23T14:16:20.633 に答える
1

インテントはバンドルを使用して別のアクティビティにデータを提供しているため、エクストラにマーカーを配置することはできません。Marker クラスは、オブジェクトを Bundle に入れるために必要な Parcelable または Serializable インターフェイスを使用しません。

しかし、そこに を入れてMarkerOptions、ConnectDialog クラスに新しいマーカーを作成することができます。

于 2013-09-23T13:29:40.777 に答える
0

多くの可能性があります。

非常に一般的なのは、次のようなコードで静的変数を設定することです。

ConnectDialog.marker = marker;    
Intent i = new Intent(myMap.this, ConnectDialog.class);
i.putExtra("marker",m);                  
startActivity(i);

ただし、そのような静的変数の使用は非常に高速です。コードの可読性は、主に大規模なアプリではあまり明確ではないようです。こういう建築はちょっと臭そうですよね。

他の可能性は、「シリアライズ可能」なカスタム クラスを取得し、それをインテント エクストラでプッシュすることです。そのような例は、MarkerOptions またはその他のカスタム クラスです。

于 2013-09-23T13:32:11.557 に答える