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

问题描述 投票:0回答:2

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

我的代码很简单

片段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 中它被正确地实例化并且值设置为 int 中的 a,即 1 或 2)

android android-fragments bundle android-navigation
2个回答
0
投票

片段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;
}

0
投票

声明全局变量,然后使用它。 像这样

Mainactivity.java

static public int a;

片段1

Mainactivity.a=1

片段2

Somevar=Mainactivity.a
© www.soinside.com 2019 - 2024. All rights reserved.