Google Map Marqueur d'événement OnClick
Je suis à l'aide fourni par google Map API V2 et android afin de faire une application android. Voici le code où j'ai mis mon marqueur:
private void addBusStopMarker(){
final Intent intent1;
map.addMarker(new MarkerOptions().position(new LatLng(1.28213,103.81721)).title("10009 - Bt Merah Ctrl").icon(BitmapDescriptorFactory.fromResource(R.drawable.busstopicon)).snippet("Average Commuters: 9,940"));
map.addMarker(new MarkerOptions().position(new LatLng(1.28294,103.82166)).title("10089 - Jln Bt Merah - B08").icon(BitmapDescriptorFactory.fromResource(R.drawable.busstopicon)).snippet("Average Commuters: 2,050"));
map.setOnMarkerClickListener(new OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker arg0) {
if(arg0.getTitle().equals("10009 - Bt Merah Ctrl"))
intent1 = new Intent(context, PopulationCharts.class);
startActivity(intent1);
return true;
}
});
}
Fondamentalement, ce que je suis en train de faire, c'est quand le marqueur est sélectionné, il affiche la fenêtre d'information qui est dans le code ci-dessus. Ensuite, lorsque je sélectionne l'extrait de code, il va exécuter la onMarkerClick événement.
Cependant, à partir du code ci-dessus, il me montre un message d'erreur: The final local variable intent1 cannot be assigned, since it is defined in an enclosing type
. Aussi, je ne savez pas comment définir marqueur snipper événement onClick
.
Merci à l'avance.
Édité partie
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(context ,PopulationCharts.class);
startActivity(intent);
}
});
Message D'Erreur
07-29 12:24:12.774: E/AndroidRuntime(15704): FATAL EXCEPTION: main
07-29 12:24:12.774: E/AndroidRuntime(15704): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.googlemap/com.example.googlemap.PopulationCharts}: java.lang.NullPointerException
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1894)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.app.ActivityThread.access$600(ActivityThread.java:127)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.os.Handler.dispatchMessage(Handler.java:99)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.os.Looper.loop(Looper.java:137)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.app.ActivityThread.main(ActivityThread.java:4512)
07-29 12:24:12.774: E/AndroidRuntime(15704): at java.lang.reflect.Method.invokeNative(Native Method)
07-29 12:24:12.774: E/AndroidRuntime(15704): at java.lang.reflect.Method.invoke(Method.java:511)
07-29 12:24:12.774: E/AndroidRuntime(15704): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982)
07-29 12:24:12.774: E/AndroidRuntime(15704): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
07-29 12:24:12.774: E/AndroidRuntime(15704): at dalvik.system.NativeStart.main(Native Method)
07-29 12:24:12.774: E/AndroidRuntime(15704): Caused by: java.lang.NullPointerException
07-29 12:24:12.774: E/AndroidRuntime(15704): at com.example.googlemap.PopulationCharts.<init>(PopulationCharts.java:28)
07-29 12:24:12.774: E/AndroidRuntime(15704): at java.lang.Class.newInstanceImpl(Native Method)
07-29 12:24:12.774: E/AndroidRuntime(15704): at java.lang.Class.newInstance(Class.java:1319)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.app.Instrumentation.newActivity(Instrumentation.java:1026)
07-29 12:24:12.774: E/AndroidRuntime(15704): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1885)
07-29 12:24:12.774: E/AndroidRuntime(15704): ... 11 more
07-29 12:24:20.563: I/Process(15704): Sending signal. PID: 15704 SIG: 9
De la Population de la classe
package com.example.googlemap;
public class PopulationCharts extends Activity{
Intent intent = getIntent();
String markerTitle= intent.getExtras().getString("markertitle");
//Pie chart
private GraphicalView chartPop;
private String[] ageGroupPop;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.population_charts);
openChartAgeGroupPop();
openChartPeakPop();
}
private void openChartAgeGroupPop(){
//codes to generate pie chart
}
//Line chart
private View lineChart;
private String[] time = new String[] {
"0700", "0800" , "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800"};
public void openChartPeakPop(){
//code to generate multiple line chart
}
}
- Ainsi, lorsque vous cliquez sur la fenêtre d'information vous permettra de démarrer une activité??
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
OnInfoWindowClickListener
ainsi, lorsque vous cliquez sur le marqueur, il montrera d'abord leInfowindow
et lorsque la fenêtre est sur il va alors démarrer l'activitéexemple:
pour obtenir la valeur en PopulationCharts classe d'activité
Utiliser l'événement setOnInfoWindowClickListener la syntaxe est la suivante: