使用导航图,当我从片段导航到活动并使用safeargs传递参数时,在活动中,我无法获取参数。我如何从片段传递参数???
在某些情况下,我可以通过getArgument()
函数获取参数,但不能在活动中获取参数。
在片段中,我通过以下方式切换到另一个活动:
findNavController().navigate(AFragmentDirections.actionAFragmentToBActivity(1)
在B活动中,在onCreate中获取参数:
val args = BActivityArgs.fromBundle(savedInstanceState!!)
但是我的应用立即崩溃。
答案 0 :(得分:3)
接受的答案是不是您问题的答案。如您所指出的:您不能在getArguments()
中使用Activity
,而只能在一个片段中使用。但是,在一个活动中,您可以获取如下数据(java语法):
String aField = BActivityArgs.fromBundle(getIntent().getExtras()).getAField()
因此,如果接收端有getArguments()
,只需将getIntent().getExtras()
替换为Activity
。
答案 1 :(得分:0)
查看Android文档:-
https://developer.android.com/guide/navigation/navigation-pass-data#java
发送数据
@Override
public void onClick(View view) {
EditText amountTv = (EditText) getView().findViewById(R.id.editTextAmount);
int amount = Integer.parseInt(amountTv.getText().toString());
ConfirmationAction action =
SpecifyAmountFragmentDirections.confirmationAction()
action.setAmount(amount)
Navigation.findNavController(view).navigate(action);
}
获取数据:-
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
TextView tv = view.findViewById(R.id.textViewAmount);
int amount = ConfirmationFragmentArgs.fromBundle(getArguments()).getAmount();
tv.setText(amount + "")
}
答案 2 :(得分:0)
BActivityArgs.fromBundle(getIntent().getExtras()).getAField();
完美运行
答案 3 :(得分:0)