[英]Passing data between two fragments
假設我想將數據從片段A傳遞到片段B,但它在片段B上引發了nullpointerexception。我想不使用活動就傳遞數據。 我該如何解決?
在FragmentA.java中
FragmentB ldf = new FragmentB ();
Bundle args = new Bundle();
args.putString("gender", genderSelected);
args.putString("name", name.getText().toString());
args.putString("contact", contactNo.getText().toString());
args.putString("age", age.getText().toString());
ldf.setArguments(args);
//Inflate the fragment
getFragmentManager().beginTransaction().add(R.id.fragmentContainer,ldf).commit();
在FragmentB.java中-在onCreateView()方法中
//接收來自先前片段的數據-提交保存
String age = getArguments().getString("age");
String gender = getArguments().getString("gender");
String contact = getArguments().getString("contact");
String name = getArguments().getString("name");
您的片段A是完美的,但在片段B中,您需要按照以下代碼進行更改。
Bundle bundle = this.getArguments();
String age = bundle.getString("age");
String gender = bundle.getString("gender");
String contact = bundle.getString("contact");
String name = bundle.getString("name");
片段之間的直接通信是不正確的方式。 引用此鏈接。
將數據存儲在“ 共享首選項”中 。
嘗試在您的類FragmentB上創建一個靜態方法
public static FragmentB newInstance(String gender, String name, String contact, String age) {
FragmentB fragment = new FragmentB();
Bundle args = new Bundle();
args.putString("gender", genderSelected);
args.putString("name", name.getText().toString());
args.putString("contact", contactNo.getText().toString());
args.putString("age", age.getText().toString());
fragment.setArguments(args);
return fragment;
}//newInstance
和
//Inflate the fragment
getFragmentManager().beginTransaction().add(R.id.fragmentContainer,FragmentB.newInstance(gender,name,contact,age)).commit();
最終像您一樣在onCreateView()中獲取數據!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.