我已经阅读(或尝试过)所有关于这里的内容,但我无法在两个片段之间传递一个简单的整数值。
我的代码很简单
片段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)
片段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;
}
声明全局变量,然后使用它。 像这样
Mainactivity.java
static public int a;
片段1
Mainactivity.a=1
片段2
Somevar=Mainactivity.a