Зачем передавать информацию в намерении фрагменту, а не получать его от фрагмента - PullRequest
0 голосов
/ 07 июля 2019

Я получил задание на создание приложения.На этапе экрана-заставки он получает инструкции получить список из SQLite, находясь на экране-заставке, и передать его фрагменту (я сделал это с помощью намерения).

Мой вопрос: почему бы его не получить?из фрагмента, вместо того, чтобы передавать его с экрана-заставки в основную деятельность, а оттуда во фрагмент?Это может показаться ненужным, если бы по какой-то причине это было мне неизвестно.

При поиске информации по этому вопросу я не смог ничего найти.Я предполагаю, что это не подходило ранее, или, по крайней мере, я не смог найти фразу, которая использовалась ранее.

Метод, который получает список и передает его в MainActivity:

private void toMainActivity(ArrayList<Movie> moviesList) {

    Intent intent = new Intent(SplashActivity.this, MainActivity.class);
    intent.putParcelableArrayListExtra("moviesList", moviesList);

    startActivity(intent);
    finish();
    }

На MainActivity:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayList<Movie> moviesList = this.getIntent().getParcelableArrayListExtra("moviesList");
    Bundle listBundle = new Bundle();
    listBundle.putParcelableArrayList("moviesList", moviesList);

    Fragment mlf = new MoviesListFragment();
    mlf.setArguments(listBundle);
    ft = getSupportFragmentManager().beginTransaction();
    ft.add(R.id.fragments_container, mlf);

    ft.commit();
}

На фрагменте:

Bundle listBundle = getArguments();
if (listBundle != null) {
    moviesList = getArguments().getParcelableArrayList("moviesList");
    moviesAdapter.attachMoviesList(moviesList);
}

1 Ответ

0 голосов
/ 10 июля 2019

Обычно нужно убедиться, что вы работаете над одним и тем же экземпляром чего-либо. При передаче чего-либо в Bundle вы гарантируете, что следующий экран будет работать на том же экземпляре переданных данных, что и предыдущий экран.

Является ли это лучше или хуже, чем каждый раз запрашивать БД, это вещь в каждом конкретном случае. Иногда вы хотите поддерживать непрерывность данных между экранами, а иногда вам нужна самая новая копия данных (которая могла бы быть изменена асинхронно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...