Android Fragments 在片段之间传递数据(已尝试所有解决方案

z4bn682m  于 2023-04-30  发布在  Android
关注(0)|答案(2)|浏览(174)

我已经阅读(或尝试)了这里的所有内容,但我无法在两个片段之间传递简单的整数值。
我的代码很简单
片段1

Bundle n = new Bundle();
n.putInt("Id", 1); // test value
NavController navController = Navigation.findNavController(getActivity(), R.id.nav_host_fragment_content_main);
navController.navigate(R.id.serviceDetailFragment, n);

片段2

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = getArguments();
if (b != null) {
        `enter code here`serviceId = b.getInt("Id");
    }

}
但是b已经是NULL(在片段1中,它被正确地intantiated并且在int i中值被设置为a)。即1或2)

nwwlzxa7

nwwlzxa71#

片段1(发送数据):

Bundle n = new Bundle();
n.putInt("Id", 1); // test value
NavController navController = Navigation.findNavController(getActivity(), R.id.nav_host_fragment_content_main);
navController.navigate(R.id.serviceDetailFragment, n);

从Fragment 2中删除onCreate方法,并将其替换为以下onCreateView方法:

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_service_detail, container, false);

    if (getArguments() != null) {
        int serviceId = getArguments().getInt("Id");
        // Now you can use the serviceId value as needed
    }

    return view;
}
ep6jt1vc

ep6jt1vc2#

声明全局变量,然后使用它。就像这样
主要活动。java**

static public int a;

分片1

Mainactivity.a=1

碎片2

Somevar=Mainactivity.a

相关问题