通过 intent 和 Bundle 传递值 Java Android Studio

Passing values through intnet and Bundle Java Android Studio

我一直在尝试将坐标从一个 activity 传递到另一个坐标、纬度和经度。在我的 Activity1 中,我有:

Intent intent = new Intent(FindLocation.this, FinalRestaurant.class);
Bundle extras = new Bundle();
extras.putDouble ("LocationLat", currentMarkerLocation.latitude);
extras.putDouble ("LocationLng", currentMarkerLocation.longitude);
intent.putExtras(extras);

Toast.makeText(FindLocation.this, currentMarkerLocation.latitude + ", " + currentMarkerLocation.longitude, Toast.LENGTH_LONG).show();

在我的第二个 Activity 中,我有:

Bundle bundle = getIntent().getExtras();
lat = bundle.getDouble("LocationLat");
lng = bundle.getDouble("LocationLng");

Toast.makeText(FinalRestaurant.this, lat + ", " + lng, Toast.LENGTH_LONG).show();

我的应用程序崩溃了,没有转到第二个 Activity,因为捆绑包为空。确切错误:Attempt to invoke virtual method 'double android.os.Bundle.getDouble(java.lang.String)' on a null object reference

我试过不使用捆绑包和使用捆绑包,但似乎没有任何效果,如果我使用默认值,它总是会变成那个值。如果有其他方法可以做到这一点,或者如果我做错了什么,我们将不胜感激。

当你调用 startActivity 时,你只是用一个新的 intent 调用它,而不是将 bundle 传递给它。

所以不要这样称呼

startActivity(new Intent(Activity1.this, Activity2.class));

这样称呼它

Intent intent = new Intent(FindLocation.this, FinalRestaurant.class);
Bundle extras = new Bundle();
extras.putDouble ("LocationLat", currentMarkerLocation.latitude);
extras.putDouble ("LocationLng", currentMarkerLocation.longitude);
intent.putExtras(extras);
startActivity(intent);  // Pass Intent created here