'void org.osmdroid.views.MapView.setTileSource(org.osmdroid.tileprovider.tilesource.ITileSource)'[重复]

问题描述 投票:-2回答:1

我的应用程序有问题,其中包括osmdroid。

活动主code

public class MainActivity extends AppCompatActivity {
private final int REQUEST_PERMISSIONS_REQUEST_CODE = 1;
private MapView map = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    BottomNavigationView navView = findViewById(R.id.nav_view);

    Context ctx = getApplicationContext();
    Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));

    map = (MapView) findViewById(R.id.map);
    map.setTileSource(TileSourceFactory.MAPNIK);



    AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
            R.id.navigation_home, R.id.navigation_rutas, R.id.navigation_historial,R.id.navigation_perfil)
            .build();
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
    NavigationUI.setupWithNavController(navView, navController);

    requestPermissionsIfNecessary(new String[] {

            Manifest.permission.ACCESS_FINE_LOCATION,

            Manifest.permission.WRITE_EXTERNAL_STORAGE
    });

}
@Override
public void onResume() {
    super.onResume();

    map.onResume();

}

@Override
public void onPause() {
    super.onPause();

    map.onPause(); 

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    ArrayList<String> permissionsToRequest = new ArrayList<>();
    for (int i = 0; i < grantResults.length; i++) {
        permissionsToRequest.add(permissions[i]);
    }
    if (permissionsToRequest.size() > 0) {
        ActivityCompat.requestPermissions(
                this,
                permissionsToRequest.toArray(new String[0]),
                REQUEST_PERMISSIONS_REQUEST_CODE);
    }
}

private void requestPermissionsIfNecessary(String[] permissions) {
    ArrayList<String> permissionsToRequest = new ArrayList<>();
    for (String permission : permissions) {
        if (ContextCompat.checkSelfPermission(this, permission)
                != PackageManager.PERMISSION_GRANTED) {

            permissionsToRequest.add(permission);
        }
    }
    if (permissionsToRequest.size() > 0) {
        ActivityCompat.requestPermissions(
                this,
                permissionsToRequest.toArray(new String[0]),
                REQUEST_PERMISSIONS_REQUEST_CODE);

    }


    map.setMultiTouchControls(true);

    GeoPoint startPoint = new GeoPoint(7.9007, -72.4790);
    IMapController mapController = map.getController();
    mapController.setZoom(9);
    mapController.setCenter(startPoint);

    Marker startMarker = new Marker(map);
    startMarker.setPosition(startPoint);
    startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
    map.getOverlays().add(startMarker);

    startMarker.setIcon(getResources().getDrawable(R.drawable.logo));
    startMarker.setTitle("Start point");
}

logcat:

错误E / UncaughtException:java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.busetapp / com.example.busetapp.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void org.osmdroid.views。 MapView.setTileSource(org.osmdroid.tileprovider.tilesource.ITileSource)'对空对象的引用

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)

   at android.app.ActivityThread.main(ActivityThread.java:5254)
   at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.osmdroid.views.MapView.setTileSource(org.osmdroid.tileprovider.tilesource.ITileSource)' on a null object reference

    at com.example.busetapp.MainActivity.onCreate(MainActivity.java:41)
    at android.app.Activity.performCreate(Activity.java:5990)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

 05-18 14:03:47.301 8665-8665/com.example.busetapp E/AndroidRuntime: FATAL EXCEPTION: main
 Process: com.example.busetapp, PID: 8665
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.busetapp/com.example.busetapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.osmdroid.views.MapView.setTileSource(org.osmdroid.tileprovider.tilesource.ITileSource)' on a null object reference

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.osmdroid.views.MapView.setTileSource(org.osmdroid.tileprovider.tilesource.ITileSource)' on a null object reference

    at com.example.busetapp.MainActivity.onCreate(MainActivity.java:41)
    at android.app.Activity.performCreate(Activity.java:5990)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    05-18 14:03:47.663 8665-8717/com.example.busetapp E/FirebaseCrash: Unable to parse Json 
    response string to get message: No value for crashes
java android android-studio osmdroid
1个回答
0
投票

是,我不知道该怎么问

© www.soinside.com 2019 - 2024. All rights reserved.