1

현재 클릭 정보 창에서 Google지도 아이콘을 만들기 위해 노력하고 있습니다. Wi-Fi에 연결하기 때문에 대화 상자 활동에서 로그인 액세스 지점에 맞춤 알림 대화 활동이 있습니다. 마커 매개 변수를 사용하여 콜백 연결 방법이 필요합니다. 새 클래스에서 wificonnector(m)을 호출하려면 Marker m 매개 변수를 새 활동으로 전달할 수 있습니까? 텐트 당신이 엑스트라에 마커를 넣을 수 없습니다 다른 활동에 데이터를 제공하기 위해 Bundle을 사용하고 있기 때문에 여기Android : 새로운 시작 활동에 객체를 전달하는 방법

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); 
} 

답변

1

ConnectDialog에 ssid가 필요한 경우 전체 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 객체처럼 취급되어야한다

. 컨텍스트 외부로 보내려고하면 메모리 누수가 발생합니다.

+0

내가 필요로하는 것은 ssid가 필요하므로 marker.gettitle()에 지역 변수 문자열을 작성하고 해당 문자열을 대화 활동에 전달하면 작동해야합니다. 권장 사항은 다음과 같습니다. 내가 뭘하는지, 고마워. – atom2ueki

1

putextra 작동하지 않는 것 같습니다. Marker 클래스는 Object를 번들에 배치하는 데 필요한 Parcelable 또는 Serializable 인터페이스를 사용하지 않습니다.

하지만 MarkerOptions을 입력하고 ConnectDialog 클래스에 새 마커를 만들 수 있습니다.

+0

새로운 마커를 만드시겠습니까? 내 마커는 ConnectDialog 클래스에서 내가 클릭 한 것을 기반으로하기 때문에 클릭하는 마커를 어떻게 알 수 있습니까? 해당 마커를 사용하여 ssid를 얻고 연결해야합니다. – atom2ueki

0

많은 가능성이 있습니다.

는 매우 인기가 같은 코드에서 정적 변수를 설정하는 것입니다 그러나 정적 변수를 사용하여

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

은 매우 빠르게 - 다음 코드의 readebility은 대부분 큰 앱에 매우 명확하지 될 것으로 보인다. 그런 종류의 건축물은 냄새 나는 듯하다.

다른 가능성은 "Serializable"인 사용자 정의 클래스를 가져 와서 intent extras로 밀어 넣는 것입니다. 이러한 예는 MarkerOptions 또는 다른 사용자 정의 클래스가 될 수 있습니다.

+0

'static' 변수를 사용하는 것은 잘못한 것입니다. 응용 프로그램 프로세스가 백그라운드에서 종료되고 종료되면'ConnectDialog '로 돌아가서'NullPointerException'이 생깁니다. 나는'정적'을 사용하는 것에 대해 조언한다. –

관련 문제