1
我有一個GoogleMap v2應用程序。在我的設備(Galaxy Nexus)中工作正常,但在其他手機中它會崩潰,我不知道爲什麼。我的代碼:NullPointerException GoogleMaps在某些設備上
public class Activity_Maps extends android.support.v4.app.FragmentActivity {
private GoogleMap map = null;
//...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
setUpMapIfNeeded(); // Verify Google Maps and load it
//...
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE); // HERE CRASH !!!!!!!!!
//...
}
private void setUpMapIfNeeded() {
if (map == null) {
if (isGoogleMapsInstalled()) {
map = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
Notification notification = new Notification(getBaseContext(),
"GoogleMaps", getResources().getString(
R.string.googlemaps_found));
notification.show();
} else {
dialogNeedGoogleMap();
}
} else {
Log.i(TAG, "map != null");
}
}
public boolean isGoogleMapsInstalled() {
try {
getPackageManager().getApplicationInfo(
"com.google.android.apps.maps", 0);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
/*
* Go GooglePlay to install GoogleMap
*/
public void dialogNeedGoogleMap() {
final String MARKET = "market://details?id=com.google.android.apps.maps";
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(getResources().getString(
R.string.googlemaps_need1));
dialog.setMessage(getResources().getString(
R.string.googlemaps_need2));
dialogo.setCancelable(false);
dialog.setPositiveButton(getResources().getString(R.string.ok),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri
.parse(MARKET));
startActivity(intent);
finish();
}
});
dialog.setNegativeButton(getResources().getString(R.string.cancel),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
});
dialog.show();
}
我的地圖中的xml:
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
我覺得崩潰可能來自設備,而不GoogleMap的,但在這種情況下應該顯示一個對話框,讓選擇安裝或退出而不加載地圖。在這種情況下,應該顯示一個對話框給出選項來安裝它或退出。
我趕上從Google分析異常,一切又都在該行:
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
我能趕上這個例外,並顯示谷歌地圖的對話,但我不明白的代碼是怎麼來這裏之前。在我的手機中,它工作正常。
謝謝,它適用於我。我會在其他設備上測試。 – k0nig