Невозможно получить данные из одного действия в другое действие Android

#java #android #android-intent

#java #Android #android-намерение

Вопрос:

Я пытаюсь перевести значения LatLng из одного действия в другое, однако я получаю нулевые значения для другого действия.

Действие 1

 PlacesClient placesClient = Places.createClient(this);

    final AutocompleteSupportFragment autocompleteSupportFragment= (AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment);

    autocompleteSupportFragment.setPlaceFields(Arrays.asList(Place.Field.ID,Place.Field.LAT_LNG, Place.Field.NAME));

    autocompleteSupportFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            
           final LatLng latLng= place.getLatLng();
            
           Toast.makeText(searchActivity.this, "Latitude" latLng.latitude  ""  "Longitude" latLng.longitude, Toast.LENGTH_SHORT).show();

            //
              lat1 = latLng.latitude;
              long1 = latLng.longitude;
            Intent intent1= new Intent(getApplicationContext(), shortestRouteActivity.class);

            intent1.putExtra("lat1",lat1 ); intent1.putExtra("long1",long1);

            Log.i("Place Coordinates: " ,"Latitude :" latLng.latitude  ""  "Longitude :" latLng.longitude);
        }

        @Override
        public void onError(Status status) {
            // TODO: Handle the error.
            Log.i( "An error occurred: " , "" status);
        }
    });
  

Действие 2

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shortest_route);

    Bundle bundle = getIntent().getExtras();
    double lat1 = bundle.getDouble("lat1");
    double long1 = bundle.getDouble("long1");


    Log.i("Lat 1 and Long 1 =", lat1   " : "  long1);

}
  

Ошибка

 java.lang.NullPointerException: Attempt to invoke virtual method 'double android.os.BaseBundle.getDouble(java.lang.String)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
  

Я перепробовал все другие способы получения значений, но все еще не могу этого сделать.

Приветствуется любая помощь! Спасибо.

Ответ №1:

Как вы инициализируете 2-е действие? Где ваш

 startActivity(intent1);
  

Возможно, вы создаете 2-е действие перед получением этих значений.

Комментарии:

1. Да, вы должны добавить эту строку после создания объекта Intent и ТОЛЬКО после этого. Возможно, вы добавили этот код где-то в другом месте, который вызывается до установки этих значений.

2. Мне очень жаль, я, должно быть, пропустил включение этого в свой вопрос при создании этого сообщения, у меня есть startActivity (intent1); в моем коде, но я все еще получаю исключение NullPointerException.

3. Эй, я понял это, я получал значения как 0.0 , мне пришлось изменить «double lat1 = bundle.getDouble («lat1″);» на «double lat1 = Double.valueOf (bundle.getString(«lat1″));»