Как получить данные от активности к фрагменту в Android? - PullRequest
0 голосов
/ 24 сентября 2018

Я использую Навигационный ящик в своем проекте, а функция «Добавить» входит в действие, которое вызывается fab.Мне нужно получить данные из действия во фрагмент.

Я уже пробовал с комплектом, и приложение вылетает.

В моей деятельности файл AddTodoActivity.java ->

date.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //showDatePicker();
            Bundle bundle = new Bundle();
            bundle.putString("1", "From Activity");
            FragmentList fragobj = new FragmentList();
            fragobj.setArguments(bundle);

            Fragment fragment = new FragmentList();
            if (fragment != null) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction ft = fragmentManager.beginTransaction();
                ft.replace(R.id.screen, fragment);
                ft.commit();
            }

            finish();
        }
    });

А в myfragment, файл FragmentList.java ->

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

    Toast.makeText(this.getContext(),  this.getArguments().getString("1"), Toast.LENGTH_SHORT).show();
    ....

1 Ответ

0 голосов
/ 24 сентября 2018

У вас есть два экземпляра FragmentList: fragobj и fragment.

Вы используете fragobj.setArguments(), но затем передаете fragment FragmentManager.

Iна самом деле не знаю, зачем вы это делаете, но если вы хотите передать аргументы, вам нужно удалить один из этих экземпляров и установить аргументы на тот, который остается.Я рекомендую просто удалить fragment one:

//...
FragmentList fragobj = new FragmentList();
fragobj.setArguments(bundle);

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.screen, fragobj);
fr.commit();
//...

Проверка нуля на фрагменте также не требуется.Нет никакого способа, которым это могло бы быть нулем.

...