Когда я запускаю свое приложение, все в порядке только в первое время

#android #database #android-fragments #dao

Вопрос:

Это код моего фрагмента, когда я создал recyclerview, когда я могу видеть список, если я нажму на него, я смогу увидеть детали на странице antoher, но когда я вернусь, я не смогу увидеть список.

@Переопределение

 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    SharedPreferences pref = getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);


    adapter = new PlatformAdapter(data);
    recyclerView = view.findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    //recyclerView.setAdapter(adapter);

    if (pref.getBoolean("firstTime", true)) {

        RequestVolley.getInstance(getContext())
                .doGetRequest("http://www....json", new RequestVolley.OnCompleteCallback() {
                    @Override
                    public void onCompleted(String response) {

                        try {
                            JSONArray jsonArray = new JSONArray(response);
                            for (int i = 0; i < jsonArray.length(); i  ) {
                                JSONObject object = jsonArray.optJSONObject(i);
                                if (object != null) {
                                    data.add(Platform.parseJSON(object));
                                }
                            }
                            adapter.notifyDataSetChanged();

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                });

        new Thread(new Runnable() {
            @Override
            public void run() {
                DB.getInstance(getContext()).getPlatformDao().insert(data);

                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        adapter.notifyDataSetChanged();
                    }
                });


                SharedPreferences.Editor editor = pref.edit();
                editor.putBoolean("firstTime", false);
                editor.apply();

                final PlatformAdapter adapter = new PlatformAdapter(data);

                getActivity().runOnUiThread(new Runnable() {
                   @Override
                    public void run() {
                        recyclerView.setAdapter(adapter);
                    }
                });
            }
        }).start();

    }
    if(pref.getBoolean("firstTime",false)){
        new Thread(new Runnable() {
            @Override
            public void run() {
                data.addAll(DB.getInstance(getContext()).getPlatformDao().findAll());

                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        adapter.notifyDataSetChanged();
                    }
                });

                        final PlatformAdapter adapter = new PlatformAdapter(data);
                        recyclerView.post(new Runnable() {
                            @Override
                            public void run() {
                                recyclerView.setAdapter(adapter);
                            }
                        });
            }

        }).start();
    }
 

}
}

это код моего приложения в точке вставки или перезагрузки из базы данных RoomDatabase, в первый раз, когда я открываю страницу, все в порядке, но во второй раз я вижу только белую страницу.Почему? У меня нет никакой ошибки. Почему его нет в базе данных или он не перезагружается?

Это мое Дао

@Dao

платформа открытого интерфейса: {

 @Insert(onConflict = OnConflictStrategy.REPLACE)
public void insertOne(Platform platform);

@Insert(onConflict=OnConflictStrategy.REPLACE)
public void  insert(List<Platform> platforms);

@Insert(onConflict=OnConflictStrategy.REPLACE)
public void insertVarArgs(Platform...platforms);

@Update
public void update(Platform platform);

@Delete
public void delete(Platform platform);

@Query("SELECT * FROM platforms")
public List<Platform> findAll();

@Query("SELECT * FROM platforms WHERE cdenominazione__=:cdenominazione__")
public Platform findById(String cdenominazione__);
 

}

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

1. Что такое «новая страница»? Это новое действие или вы добавляете новый фрагмент?

2. Всегда фрагментируйте, но проблема не в навигации от/к фрагменту, а в базе данных.

3. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.

Ответ №1:

Когда вы добавляете фрагмент, вы делаете добавление или замену? Aso вы добавляете фрагмент в резервную копию?

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

1. Я ориентируюсь с действием на втором фрагменте, а затем возвращаюсь к первому, и я ничего не вижу. Но когда я выполняю вставку или загрузку из БД, я думаю, что это не работает.