【发布时间】:2016-08-13 20:02:34
【问题描述】:
我正在尝试从我的 Android 应用程序打开 Google 地图活动,然后当我单击地图时,获取位置。 但我无法打开我的 Google 地图活动。 这是我试图打开 Activity 的代码:
public class RegistrationActivity extends AppCompatActivity implements View.OnClickListener {
Button buttonPlaceBD,buttonCurrPlace;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
buttonPlaceBD=(Button)findViewById(R.id.buttonPlaceBD);
buttonPlaceBD.setOnClickListener(this);
buttonCurrPlace=(Button)findViewById(R.id.buttonCurrPlace);
buttonCurrPlace.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent;
switch (v.getId())
{
case R.id.buttonPlaceBD:
intent=new Intent(this,BDMapsActivity.class);
startActivity(intent);
break;
case R.id.buttonBack:
finish();
break;
}
}
}
这是我的 BDMapsActivity.java
public class BDMapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMapClickListener{
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bdmaps);
mMap.setOnMapClickListener(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
@Override
public void onMapClick(LatLng latLng) {
System.out.println("CLIIIIIIIIIICK: "+latLng);
}
}
这是我的 activity_bdmaps.xml
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.serg_shapoval.astrologyes.BDMapsActivity" />
它给了我一个错误:
E/AndroidRuntime: 致命异常: main 进程:com.example.serg_shapoval.astrologyes,PID:18731 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.serg_shapoval.astrologyes/com.example.serg_shapoval.astrologyes.BDMapsActivity}:java.lang.NullPointerException 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2221) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2280) 在 android.app.ActivityThread.access$800(ActivityThread.java:141) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5059) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.NullPointerException 在 com.example.serg_shapoval.astrologyes.BDMapsActivity.onCreate(BDMapsActivity.java:22) 在 android.app.Activity.performCreate(Activity.java:5312) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2178) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2280) 在 android.app.ActivityThread.access$800(ActivityThread.java:141) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5059) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 在 dalvik.system.NativeStart.main(本机方法)
【问题讨论】:
-
移动 mMap.setOnMapClickListener(this);一直到 onMapReady()
-
@DanielNugent,感谢您的回答。它加载了我的谷歌地图活动,但它在 MapClick 方法上不起作用!
-
您还需要获取 SupportMapFragment 并致电
supportMapFragment.getMapAync(this); -
@DanielNugent,谢谢!它有效
标签: java android google-maps android-studio