![](/img/trans.png)
[英]Sending argument to Fragment from Activity using NavigationComponent and SafeArgs with the same name reference
[英]Passing argument from fragment to activity using SafeArgs
使用導航圖,當我從片段導航到活動並使用安全參數傳遞參數時,在活動中,我無法獲得參數。 我怎樣才能得到從片段傳遞的參數???
在片段中,我可以通過getArgument()
function 獲得參數,但不能在活動中。
在片段中,我通過以下方式切換到另一個活動:
findNavController().navigate(AFragmentDirections.actionAFragmentToBActivity(1)
並在 B 活動中通過以下方式在 onCreate 中獲取參數:
val args = BActivityArgs.fromBundle(savedInstanceState!!)
但我的應用程序立即崩潰。
接受的答案不是您問題的答案。 正如您所指出的:您不能在Activity
中使用getArguments()
,您只能在片段中執行此操作。 但是,在活動中,您可以獲得這樣的數據(java 語法):
String aField = BActivityArgs.fromBundle(getIntent().getExtras()).getAField()
因此,如果您在接收端有Activity
,只需將getArguments()
替換為getIntent().getExtras()
。
查看 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 + "")
}
BActivityArgs.fromBundle(getIntent().getExtras()).getAField();
完美工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.