1

私はこの問題を抱えています:

フラグメントで視覚化されたマップから 1 つのマーカーをタップすると、1 つのアクティビティを開始する必要があります。

これは私のXMLの一部です:

<LinearLayout 
    android:id="@+id/mylayout"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="560"  >              

<fragment
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:clickable="true"
android:name="com.google.android.gms.maps.MapFragment"
/>

</LinearLayout>

Tabella データに基づいて作成された 1 つのマーカーをタップすると、私の ACTIVITY1 マストは ACTIVITY2 (ここには書かれていません) を呼び出します。

@SuppressLint("NewApi")
public  class ACTIVITY1 extends Activity {
. . . . . .

ArrayList<HashMap<String, String>> Tabella ();
. . . . . .
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);

mapView = ((MapFragment) getFragmentManager().findFragmentById(R.id.mapview)).getMap(); 
    . . . . 
    showmap(null);
    . . . . 
}


//prepare markers on map fragment
private void showMap(OnMarkerClickListener OnMarkerClickListener) {

    arrM = new ArrayList<String> ();

    mapView.setOnMarkerClickListener ( OnMarkerClickListener );

    try {

         for (int i=0 ; i<Tabella.size(); i++) {

              HashMap<String, String> a = Tabella.get(i);
              final String insegna  = a.get("insegna");
              String lat1  = a.get("latitudine");
              String longi = a.get("longitudine");

              if (lat1.equals(""))  lat1 = "0.0";
              if (longi.equals(""))  longi = "0.0";
              latitude = Double.parseDouble(lat1);
              longitude = Double.parseDouble(longi);

              cameraPosition = new CameraPosition.Builder()
                               .target(new LatLng(latitude,longitude))     
                               .zoom(17)                   // Sets the zoom
                               .build();                   

               marker = mapView.addMarker(new MarkerOptions()
                       .position(new LatLng(latitude, longitude)) 
                       .snippet("" )
                       .icon(BitmapDescriptorFactory.fromResource(R.drawable.iconpoi)) 
                       .title(insegna)); 

               mapView.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
               marker.showInfoWindow();

               arrM.add(marker.getId());

               //mapView.setOnMarkerClickListener ( OnMarkerClickListener );

            }
     } catch (Exception e) {
        e.printStackTrace();
       }

 }

 //called when marker selected
 public void onMarkerClick(Marker marker) {
     . . .
     Intent myIntent = new Intent(ACTIVITY1 .this,Activity2.class); 
     . .
     myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
     ACTIVITY1 .this.startActivity(myIntent);
     . . 

 }  

 }

public voidonMarkerClick(Marker marker)が呼び出されないのはなぜですか?

なにが問題ですか ?

ありがとう

4

1 に答える 1

0

public void onMarkerClick(Marker marker) が呼び出されないのはなぜですか?

呼び出したためshowmap(null)にリスナーを登録しなかったためです。

于 2013-03-07T16:36:24.567 に答える