让我们说我想将数据从片段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");
答案 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()中获取数据!