В настоящее время я пытаюсь перенести мою активность в OSMDroid на фрагменты. Кажется, что все настроено правильно, но я получаю это странное исключение NullPointerException, которое я не уверен в решении.NulPointerException at maps.y.p.onResume (Неизвестный источник) о реализации фрагментов для OSMDroid
02-20 23:59:36.140: E/AndroidRuntime(970): FATAL EXCEPTION: main
02-20 23:59:36.140: E/AndroidRuntime(970): java.lang.NullPointerException
02-20 23:59:36.140: E/AndroidRuntime(970): at maps.y.p.onResume(Unknown Source)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:115)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.os.Binder.transact(Binder.java:297)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onResume(Unknown Source)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.google.android.gms.maps.SupportMapFragment$a.onResume(Unknown Source)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.google.android.gms.internal.d$1.a(Unknown Source)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.google.android.gms.internal.d.a(Unknown Source)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.google.android.gms.internal.d.onResume(Unknown Source)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.google.android.gms.maps.SupportMapFragment.onResume(Unknown Source)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:918)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.os.Handler.handleCallback(Handler.java:605)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.os.Handler.dispatchMessage(Handler.java:92)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.os.Looper.loop(Looper.java:137)
02-20 23:59:36.140: E/AndroidRuntime(970): at android.app.ActivityThread.main(ActivityThread.java:4511)
02-20 23:59:36.140: E/AndroidRuntime(970): at java.lang.reflect.Method.invokeNative(Native Method)
02-20 23:59:36.140: E/AndroidRuntime(970): at java.lang.reflect.Method.invoke(Method.java:511)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
02-20 23:59:36.140: E/AndroidRuntime(970): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
02-20 23:59:36.140: E/AndroidRuntime(970): at dalvik.system.NativeStart.main(Native Method)
02-20 23:59:36.225: E/android.os.Debug(29093): [email protected] > dumpstate -k -t -n -z -d -o /data/log/dumpstate_app_error
Вот моя часть моих кодов для класса фрагмента:
public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) {
final View view = inflator.inflate(R.layout.offline_map_activity, container, false);
myOpenMapView = (MapView) view.findViewById(R.id.openmapview);
mResourceProxy = new DefaultResourceProxyImpl(getSherlockActivity().getApplicationContext());
myOpenMapView.getTileProvider().clearTileCache();
File aFile = new File(Environment.getExternalStorageDirectory().toString() +
"/test/offlineMap/" + tID + ".zip");
IArchiveFile[] myArchives = new IArchiveFile[1];
myArchives[0] = ArchiveFileFactory.getArchiveFile(aFile);
MyTileSource myTiles = new MyTileSource("" + tID, null, 12, 12, 256, ".png");
MapTileModuleProviderBase[] myProviders = new MapTileModuleProviderBase[2];
myProviders[0] = new MapTileFileArchiveProvider(new SimpleRegisterReceiver(getSherlockActivity().getApplicationContext()),
myTiles, myArchives);
myProviders[1] = new MapTileDownloader(TileSourceFactory.MAPNIK);
MapTileProviderArray MyTileProvider = new MapTileProviderArray(myTiles,null, myProviders);
TilesOverlay MyTilesOverlay = new TilesOverlay(MyTileProvider, getSherlockActivity().getApplicationContext());
//codes continue...
return view;
}
Дайте мне знать, если больше кодов должны быть показаны. Благодаря!
Попробуйте прокомментировать все, кроме osmdroid mapview, и посмотрите, можете ли вы запустить его в суперпростой версии. Также, какую версию osmdroid вы используете? В-третьих, рассмотрим использование android mapsv2 вместо osmdroid, поскольку он работает намного лучше в фрагментах и теперь поддерживает пользовательские плитки. – Warpzit
Хорошо, я сначала попытаюсь запустить суперпростую версию ... В настоящее время я использую библиотеку OSMDRoid v3.0.8. Что касается google android maps v2, могу ли я узнать, есть ли пример того, как ее использовать поддерживать пользовательские плитки? Я не могу найти ни одного примера ... = X – lyk
Я сделал то, что вы сказали, но он по-прежнему почти такой же: 02-21 11: 47: 40.523: E/AndroidRuntime (1971): java.lang .NullPointerException 02-21 11: 47: 40.523: E/AndroidRuntime (1971): \t at maps.yponResume (Неизвестный источник) – lyk