Мое приложение не запустится после первого открытия - PullRequest
0 голосов
/ 01 марта 2020

Это простое приложение, которое управляет вашими домашними растениями. После того, как я добавил опцию изображения растения, приложение загружается только при первом его открытии. если я не добавлю какие-либо растения, все начнется нормально, но когда я добавлю растение с или без снятого изображения, оно не запустится снова, если я не удаляю его, не переустанавливаю или не очищаю все данные

Вот код, куда я сохраняю и загружаю из SharedPreferences :

private void saveData(){
        SharedPreferences sharedPreferences = getSharedPreferences("sharedPreferences",MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        Gson gson = new Gson();
        String json = gson.toJson(plants);
        editor.putString("plant list",json);
        editor.apply();
    }
    private void loadData(){
        SharedPreferences sharedPreferences = getSharedPreferences("sharedPreferences",MODE_PRIVATE);
        Gson gson = new Gson();
        String json = sharedPreferences.getString("plant list",null);
        java.lang.reflect.Type type = new TypeToken<ArrayList<Plant>>() {}.getType();
        plants = gson.fromJson(json,type);
        if(plants == null){
            plants = new ArrayList<>();
        }
        //Gets all the names of the plants in "plantNames"
        for (int i = 0 ; i<plants.size();i++){
            plantNames.add(plants.get(i).getName());
        }
    }

Вот логкат :

2020-02-27 01:46:57.809 13409-13409/? I/e.digitalgarde: Not late-enabling -Xcheck:jni (already on)
2020-02-27 01:46:57.982 13409-13409/? W/e.digitalgarde: Unexpected CPU variant for X86 using defaults: x86
2020-02-27 01:46:58.647 13409-13420/com.example.digitalgarden I/e.digitalgarde: Background concurrent copying GC freed 19620(7MB) AllocSpace objects, 0(0B) LOS objects, 58% free, 1071KB/2MB, paused 1.262ms total 115.840ms
2020-02-27 01:46:58.798 13409-13409/com.example.digitalgarden W/e.digitalgarde: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-02-27 01:46:58.801 13409-13409/com.example.digitalgarden W/e.digitalgarde: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-02-27 01:46:58.967 13409-13409/com.example.digitalgarden W/e.digitalgarde: Accessing hidden field Lsun/misc/Unsafe;->theUnsafe:Lsun/misc/Unsafe; (light greylist, reflection)
2020-02-27 01:46:59.000 13409-13409/com.example.digitalgarden D/OpenGLRenderer: Skia GL Pipeline
2020-02-27 01:46:59.156 13409-13409/com.example.digitalgarden A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xff6ec5c0 in tid 13409 (e.digitalgarden), pid 13409 (e.digitalgarden)

Любая помощь будет высоко ценится :)

edit 1: Это происходит, когда я вызываю метод loadData. Он загружает массив растительных объектов из sharredPreferences, вот код для объекта Plant:

public class Plant {

    private String name;
    private String type;
    private int waterLevel;
    private Bitmap plantPicture;

    public Plant(String n,String t,int w,Bitmap pp){
        setName(n);
        setType(t);
        setWaterLevel(w);
        setPlantPicture(pp);
    }

    public void waterPlant(){
        this.waterLevel = 100;
    }

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getType(){
        return type;
    }
    public void setType(String type){
        this.type = type;
    }
    public int getWaterLevel(){
        return waterLevel;
    }
    public void setWaterLevel(int waterLevel){
        this.waterLevel = waterLevel;
    }
    public Bitmap getPlantPicture(){return this.plantPicture;}
    public void setPlantPicture(Bitmap pic){this.plantPicture = pic;}

}

Примечание: приложение не падало до того, как я добавил функцию изображения растения.

...