簡體   English   中英

在兩個片段之間傳遞數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM