我在尝试在Android应用程序中更改GoogleMap的类型时遇到了麻烦。我有一个基本的操作栏菜单,当我在操作栏中选择正确的选项时,我希望将地图作为碎片放置在我的活动中。这是我的代码:
package com.example.where2go;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends FragmentActivity {
private MahMapFrag mapFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
initializeMap();
} catch (Exception e) {e.printStackTrace();}
}
private boolean initializeMap() {
if (mapFragment == null) {
mapFragment = new MahMapFrag();
// check if map is created successfully or not
try{
if (mapFragment == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
return false;
}
else {
Log.d("MLOGS", "Map Intitialized");
return true;
}
} catch(Exception e) {
e.printStackTrace();
}
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_map:
getFragmentManager().beginTransaction().replace(android.R.id.content,mapFragment).commit();
break;
default:
return false;
}
return true;
}
}
这是我的类,它扩展了MapFragment:
package com.example.where2go;
import android.util.Log;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
public class MahMapFrag extends MapFragment {
public MahMapFrag() {
Log.d("MLOGS", "CONSTRUCT");
//this.getMap().setMapType(GoogleMap.MAP_TYPE_SATELLITE);
}
}
当行
this.getMap().setMapType(GoogleMap.MAP_TYPE_SATELLITE);
被评论后,该应用程序(似乎)运行顺利。但是,当该行取消注释时,如果我尝试在构造函数中更改地图的类型,则当我单击操作栏时该应用程序崩溃,该调用
getFragmentManager().beginTransaction().replace(android.R.id.content,mapFragment).commit();
。
我在处有一个空指针异常com.where2go.MainActivity.onOptionItemSelected
。它已经尝试了几个小时才能弄清楚为什么在设置地图类型时我的mapFragment为null。
有人可以给我有关此问题的线索和/或解释吗?我真的很想了解,因为我感觉到我缺少对进一步的android开发至关重要的东西...。
我在安装了Google Play服务的情况下使用Eclipse Juno和Genymotion,并通过API 19进行了编译。
谢谢
岩石
确保您使用的是我在mah Case中发现的帮助。(参考您的MahMapFrag大声笑)
fragmentManager = getSupportFragmentManager();
将此添加到您的xml
<fragment
android:id="@+id/location_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句