NullPointerException:FragmentManagerImpl.execPendingActions(FragmentManager.java:1410)
所以,我有一个片段,它使用NullPointerException:FragmentManagerImpl.execPendingActions(FragmentManager.java:1410),java,android,google-maps,nullpointerexception,Java,Android,Google Maps,Nullpointerexception,所以,我有一个片段,它使用映射片段。这很好,但当我按back或退出应用程序时,会出现NullPointerException,我搜索了又搜索,但我不明白是什么 以下是我的日志: 06-17 12:03:59.105: E/AndroidRuntime(32422): FATAL EXCEPTION: main 06-17 12:03:59.105: E/AndroidRuntime(32422): java.lang.NullPointerException 06-17 12:03:59.105
映射片段。这很好,但当我按back或退出应用程序时,会出现NullPointerException
,我搜索了又搜索,但我不明白是什么
以下是我的日志:
06-17 12:03:59.105: E/AndroidRuntime(32422): FATAL EXCEPTION: main
06-17 12:03:59.105: E/AndroidRuntime(32422): java.lang.NullPointerException
06-17 12:03:59.105: E/AndroidRuntime(32422): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1410)
06-17 12:03:59.105: E/AndroidRuntime(32422): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441)
06-17 12:03:59.105: E/AndroidRuntime(32422): at android.os.Handler.handleCallback(Handler.java:725)
06-17 12:03:59.105: E/AndroidRuntime(32422): at android.os.Handler.dispatchMessage(Handler.java:92)
06-17 12:03:59.105: E/AndroidRuntime(32422): at android.os.Looper.loop(Looper.java:153)
06-17 12:03:59.105: E/AndroidRuntime(32422): at android.app.ActivityThread.main(ActivityThread.java:5297)
06-17 12:03:59.105: E/AndroidRuntime(32422): at java.lang.reflect.Method.invokeNative(Native Method)
06-17 12:03:59.105: E/AndroidRuntime(32422): at java.lang.reflect.Method.invoke(Method.java:511)
06-17 12:03:59.105: E/AndroidRuntime(32422): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
06-17 12:03:59.105: E/AndroidRuntime(32422): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-17 12:03:59.105: E/AndroidRuntime(32422): at dalvik.system.NativeStart.main(Native Method)
这是我认为正确的答案,但我无法实施
谢谢你的帮助
Java代码:
public class NearMeFragment extends Fragment {
private GoogleMap googleMap;
double latitude = 19.18482;
double longitude = 72.83410;
Context context;
ListFragment lf;
ListView lv;
RestaurantListAdapter adapter;
GPSTracker gps;
public NearMeFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_near_me, container,
false);
getActivity().getActionBar().show();
createMap
return rootView;
}
public void createMap() {
try {
initializeMap();
for (int i = 0; i < bean.size(); i++) {
try {
latitude = Double.valueOf(bean.get(i).getLatitude());
longitude = Double.valueOf(bean.get(i).getLongitude());
} catch (NumberFormatException e) {
latitude = 19.18482;
longitude = 72.83410;
}
LatLng pos = new LatLng(latitude, longitude);
MarkerOptions marker = new MarkerOptions()
.position(pos)
.title(bean.get(i).getName())
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.marker));
CircleOptions circle = new CircleOptions().center(pos)
.radius(Double.valueOf(bean.get(i).getDistance()) * 10)
.strokeColor(Color.parseColor("#FFFFFF"))
.strokeWidth(5)
.fillColor(Color.parseColor("#25f67f21"));
googleMap.addMarker(marker);
googleMap.addCircle(circle);
}
// CameraPosition cp = new CameraPosition.Builder()
// .target(new LatLng(latitude, longitude)).zoom(12).build();
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(
latitude, longitude));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);
googleMap.moveCamera(center);
googleMap.animateCamera(zoom);
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(false);
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.getUiSettings().setZoomGesturesEnabled(true);
googleMap.getUiSettings().setRotateGesturesEnabled(true);
googleMap.getUiSettings().setAllGesturesEnabled(true);
} catch (Exception e) {
Log.e("TAG", "MSG: " + e);
}
}
private void initializeMap() {
if (googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
if (googleMap == null) {
Toast.makeText(NearMeFragment.this.getActivity(),
"Sorry! unable to create maps", Toast.LENGTH_LONG)
.show();
}
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
Fragment fragment = ((MapFragment) getFragmentManager()
.findFragmentById(R.id.map));
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}
}
试着这样做:onDestroyView()
}
您的活动必须扩展活动而不是使用旧的MapFragment
,请尝试使用新的映射,即SupportMapFragment
您需要将xml更改为:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
至
SupportMapFragment fragment = ((SupportMapFragment)
确保您将super.onDestroyView()放在在方法onDestroyView的末尾,在移除贴图片段之后。例如:
@Override
public void onDestroyView() {
Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
ft.remove(fragment).commit();
super.onDestroyView();
}
在实现映射的地方发布代码亲爱的,请发布代码+XML布局我编辑了question@VarunBarve张贴imports@Rod_Algonquin我发布了这篇文章,上面写着“无法从片段转换到SupportMapFragment”@VarunBarve发布上面的代码。。凭你所拥有的。
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
MapFragment fragment = ((MapFragment)
SupportMapFragment fragment = ((SupportMapFragment)
@Override
public void onDestroyView() {
Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
ft.remove(fragment).commit();
super.onDestroyView();
}