如何从 activity 获取数据到 android 中的片段?

How to get data from activity to fragment in android?

我在项目中使用 Navigation Drawer,"Add" 功能在 fab 调用的 activity 中。我需要从 Activity 获取数据到片段。

我已经尝试使用捆绑包,但应用程序崩溃了。

在我的 activity、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();
    ....

您有两个 FragmentList 实例:fragobjfragment

您使用 fragobj.setArguments(),然后将 fragment 传递给 FragmentManager。

我真的不知道你为什么要这样做,但如果你想传递参数,你需要删除其中一个实例,然后在剩下的实例上设置参数。我建议只删除 fragment 一个:

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

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

Fragment 的空检查也是不必要的。它不可能为空。