Я довольно долго искал, но безрезультатно, так как до сих пор не знаю, почему это не работает.
Я уже использую SharedPreference между одним действием и другим
Код:
Сохранение данных
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("email", email.getEmail().toString());
editor.apply();
Получение данных
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String userEmail = preferences.getString("email", "defaultValue");
DisplayEmail.setText(userEmail);
Этот код работает нормально. Но теперь, когда мы переходим к другому общему предпочтению, это происходит:
java.lang.RuntimeException: невозможно запустить действие. ComponentInfo {com.example.nathan.application / com.example.nathan.application.ActCamera}: java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0
на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2796)
на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2867)
на android.app.ActivityThread.-wrap12 (ActivityThread.java)
на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1570)
на android.os.Handler.dispatchMessage (Handler.java:105)
на android.os.Looper.loop (Looper.java:156)
на android.app.ActivityThread.main (ActivityThread.java:6595)
в java.lang.reflect.Method.invoke (родной метод)
на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:942)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:832)
Вызывается: java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0
Код из-за этой ошибки:
double Latitude = loc.getLatitude();
double Longitude = loc.getLatitude();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Country", details.doInBackground().toString());
editor.putLong("Latitude", Double.doubleToRawLongBits(Latitude));
editor.putLong("Longitude", Double.doubleToRawLongBits(Longitude));
editor.apply();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Latitude = Double.longBitsToDouble(preferences.getLong("Latitude", 0));
Longitude = Double.longBitsToDouble(preferences.getLong("Longitude", 0));