我有一个活动ACTIVITY=>Fragment=>MapFragment
在活动的onPause上,MapFragment变为null。
下面是我使用的方法:
private MapFragment getMapFragment() {
FragmentManager fm = null;
Log.d("", "sdk: " + Build.VERSION.SDK_INT);
Log.d("", "release: " + Build.VERSION.RELEASE);
if (Build.VERSION.SDK_INT < 21) {
Log.d("framentmgr", "using getFragmentManager");
fm = getFragmentManager();
} else {
Log.d("framentmgr", "using getChildFragmentManager");
fm = getChildFragmentManager();
}
// fm = getChildFragmentManager();
fm.beginTransaction();
MapFragment mapFragment = (MapFragment) fm.findFragmentById(R.id.fragment_map);
return mapFragment;
}为什么会发生这种情况,有什么解决方案或原因吗?
发布于 2015-02-27 14:21:37
谢谢,但我也收到了同样的错误。所以我现在用一种巧妙的方式解决了这个问题,在另一个类中将MapFragment作为公共静态变量。
public static MapFragment mapFragment;在Fragment类中
private MapFragment getMapFragment() {
FragmentManager fm = null;
Log.d("", "sdk: " + Build.VERSION.SDK_INT);
Log.d("", "release: " + Build.VERSION.RELEASE);
if (Build.VERSION.SDK_INT < 21) {
Log.d("framentmgr", "using getFragmentManager");
fm = getFragmentManager();
} else {
Log.d("framentmgr", "using getChildFragmentManager");
fm = getChildFragmentManager();
}
// fm = getChildFragmentManager();
fm.beginTransaction();
MapFragment mapFragment = null;
if(MainActivity.mapFragment==null)
mapFragment = (MapFragment) fm.findFragmentById(R.id.fragment_map);
else
return MainActivity.mapFragment;
return mapFragment;
}https://stackoverflow.com/questions/28742975
复制相似问题