在两个片段之间传递数据

时间:2015-07-20 13:50:33

标签: java android android-fragments android-intent

让我们说我想将数据从片段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");

3 个答案:

答案 0 :(得分:1)

您的片段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");

片段和片段之间的直接通信不是正确的方式。Refers this link.

答案 1 :(得分:0)

将数据存储在Shared Preferences

答案 2 :(得分:0)

尝试在类FragmentB上创建静态方法

    select * from tableB 
     where substring(convert(varchar,Frequency),0,charindex('.',Frequency))+Period_Code  
         in (
             Select Period
             from tableA
             )

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

最终像你一样在你的onCreateView()中获取数据!