gpt4 book ai didi

java - 抽屉导航 Activity : passing values between fragment

转载 作者:行者123 更新时间:2023-12-01 16:56:47 24 4
gpt4 key购买 nike

我遇到问题,无法将 String 值从 Fragment 传递到另一个 Fragment

这是我的代码的一部分:

FragmentA:

public class HomeFragment extends Fragment {

private HomeViewModel homeViewModel;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
homeViewModel =
ViewModelProviders.of(this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, false);

Button btn = (Button) root.findViewById(R.id.myButton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GalleryFragment galleryFragment = new GalleryFragment();
Bundle bundle = new Bundle();
String s = "ciao";
bundle.putString("Data", s);
galleryFragment.setArguments(bundle);
Toast.makeText(getActivity(),s,Toast.LENGTH_LONG).show(); //with this i know the function is ok
}
});
return root;
}
}

FragmentB:

public class GalleryFragment extends Fragment {

private GalleryViewModel galleryViewModel;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
galleryViewModel =
ViewModelProviders.of(this).get(GalleryViewModel.class);
View root = inflater.inflate(R.layout.fragment_gallery, container, false);

Bundle bundle = getActivity().getIntent().getExtras();
TextView textView = (TextView) root.findViewById(R.id.myTitleText);
if(bundle!=null){
String name = bundle.getString("Data");
Toast.makeText(getActivity(),name,Toast.LENGTH_LONG).show();
textView.setText(name);
}
return root;
}
}

如果我删除 if(bundle!=null) 部分,调试器会给出以下错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.os.Bundle.getString(java.lang.String)”

摘要:

我在 fragmentA --> 我单击按钮 --> 我移动到 fragmentB 以查看 TextView 的值是否已更改--> 什么也没发生。

有人可以解释一下错误是什么吗?

感谢您的宝贵时间。

最佳答案

您应该查看 ViewModel:ViewModel Overview .

您应该在父 Activity 中初始化一个 ViewModel,然后在创建每个 Fragment 时,提供对该通用 ViewModel 的访问。

然后,所有 3 个组件将共享对通用生命周期感知对象的访问权限,您可以使用该对象轻松进行相互通信。

关于java - 抽屉导航 Activity : passing values between fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61576502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com