當我做GoogleMap map =((SupportMapFragment)manager.findFragmentById(R.id.map))。getMap()時,爲什麼會出現空指針異常?我必須失去了一些東西很明顯:從FragmentManager獲取GoogleMap時遇到問題
public class ReviewMap extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_review_map);
if (savedInstanceState == null) {
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().add(R.id.container, new MapFragment()).commit();
GoogleMap map = ((SupportMapFragment) manager.findFragmentById(R.id.map)).getMap(); // Null pointer exception
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.review_map, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
public static class MapFragment extends Fragment {
public MapFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_review_map, container, false);
return rootView;
}
}
}
我的佈局:
activity_review_map.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="atorch.shortestpaths.ReviewMap"
tools:ignore="MergeRootFrame" />
fragment_review_map.xml - 這是一個我想與R.訪問id.map:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
如果我註釋掉GoogleMap map =((SupportMapFragment)manager.findFragmentById( R.id.map))。getMap()在第一行代碼中,一切都按預期工作(我在ActionBar下看到一張地圖);如果我離開該行,我的logcat中會出現Null指針異常,並且應用程序在顯示任何地圖之前崩潰。
你想直接在活動中使用的地圖片段,或者你想擁有自己的自定義片段含有MapView的?如果是前者,只需在您的活動的佈局文件中直接使用即可。如果是後者,則需要在Fragment的佈局文件中包含com.google.android.gms.maps.MapView。根據你的回答,我可以詳細闡述。 –
2014-11-02 19:08:48
前者:我想直接在我的活動中包含地圖片段。 – Adrian 2014-11-02 19:23:26