无论我做什么,我的代码似乎都会在 getMap() 处崩溃。我几乎在所有地方都尝试过调整我的代码。我以前创建过这个应用程序,但由于计算机崩溃,我不得不重建。我的一些代码。现在它崩溃了。 我的主要代码:
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
public class FishFishSpotActivity extends Activity{
public static final String XCORD = "xcord";
public static final String YCORD = "ycord";
public static final String NOTE = "note";
public static final String SAVED = "saved";
public static final String ID = "id";
TextView XCord= null;
TextView YCord= null;
TextView Note= null;
int Id = 0;
Boolean Saved = null;
private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fish_fish_spot);
initializeMap();
}
protected void onStart(){
map.isMyLocationEnabled();
}
@Override
protected void onResume() {
super.onResume();
}
public boolean onCreateOptionsMenu(Menu menu){
return false;
}
public void onMapClick(LatLng point){
map.addMarker(new MarkerOptions().position(point));
}
public void onMarkerClick(Marker marker){
}
public static void SpotSaved(boolean saved, String A){
}
private void initializeMap()
{
if (map == null) {
map = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
// check if map is created successfully or not
if (map == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
}
这是我的manafist:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Nick.fishfishspot"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="19" />
<permission
android:name="com.Nick.fishfishspot.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.Nick.fishfishspot.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="key is here"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="com.Nick.fishfishspot.FishFishSpotActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这是 XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.Nick.fishfishspot.FishFishSpotActivity$PlaceholderFragment" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="go" />
<EditText
android:id="@+id/x_cord"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/y_cord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/x_cord"
android:layout_alignBottom="@+id/x_cord"
android:layout_toLeftOf="@id/button1"
android:layout_toRightOf="@+id/x_cord"
android:ems="10" />
这是错误:
05-05 22:44:53.390: E/AndroidRuntime(24604): FATAL EXCEPTION: main
05-05 22:44:53.390: E/AndroidRuntime(24604): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Nick.fishfishspot/com.Nick.fishfishspot.FishFishSpotActivity}:java.lang.NullPointerException
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2304)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.ActivityThread.access$700(ActivityThread.java:165)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.os.Handler.dispatchMessage(Handler.java:99)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.os.Looper.loop(Looper.java:137)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.ActivityThread.main(ActivityThread.java:5450)
05-05 22:44:53.390: E/AndroidRuntime(24604): at java.lang.reflect.Method.invokeNative(Native Method)
05-05 22:44:53.390: E/AndroidRuntime(24604): at java.lang.reflect.Method.invoke(Method.java:525)
05-05 22:44:53.390: E/AndroidRuntime(24604): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
05-05 22:44:53.390: E/AndroidRuntime(24604): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
05-05 22:44:53.390: E/AndroidRuntime(24604): at dalvik.system.NativeStart.main(Native Method)
05-05 22:44:53.390: E/AndroidRuntime(24604): Caused by: java.lang.NullPointerException
05-05 22:44:53.390: E/AndroidRuntime(24604): at com.Nick.fishfishspot.FishFishSpotActivity.initializeMap(FishFishSpotActivity.java:76)
05-05 22:44:53.390: E/AndroidRuntime(24604): at com.Nick.fishfishspot.FishFishSpotActivity.onCreate(FishFishSpotActivity.java:38)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.Activity.performCreate(Activity.java:5369)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
05-05 22:44:53.390: E/AndroidRuntime(24604): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
05-05 22:44:53.390: E/AndroidRuntime(24604): ... 11 more
最佳答案
你不见了
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
在 list 的应用标签中
getMap()
可以返回 null。您可以在初始化 GoogleMap
对象之前检查 google play 服务的可用性
A GoogleMap can only be acquired using getMap() when the underlying maps system is loaded and the underlying view in the fragment exists. This class automatically initializes the maps system and the view; however you cannot be guaranteed when it will be ready because this depends on the availability of the Google Play services APK. If a GoogleMap is not available, getMap() will return null.
此外,tools:context="com.Nick.fishfishspot.FishFishSpotActivity$PlaceholderFragment"
提示您在 Activity 中初始化您的 MapFragment
属于 fragment 。
如果您想在 fragment 中放置 map ,则需要扩展 MapFragment
或在 fragment 布局中使用 MapView
。
Android - android.view.InflateException: Binary XML file line #8: Error inflating class fragment
关于java - 每当我调用 getMap() 时,我都会收到 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23485662/