如何从 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
实例:fragobj
和 fragment
。
您使用 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 的空检查也是不必要的。它不可能为空。
我在项目中使用 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
实例:fragobj
和 fragment
。
您使用 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 的空检查也是不必要的。它不可能为空。