我是片段新手。我在第一个片段中添加了两个编辑文本,我想将该edittext数据发送到第二个片段。
我正在使用一个bundle,但它在第二个片段中打印为null。
有谁能告诉我如何将数据发送到其他片段?
第一个片段
nextt.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View _view) {
int viewId = _view.getId();
FragmentTransaction ft;
switch (viewId) {
case R.id.Button1:
FragmentManager fm = getFragmentManager();
ft = fm.beginTransaction();
SecondFrag secondFrag = new SecondFrag();
Bundle bundle = new Bundle();
bundle.putInt("deviceInst",viewId);
secondFrag.setArguments(bundle);
ft.replace(R.id.total_frame_content, secondFrag);
ft.addToBackStack(null);
ft.commit();
break;
}
}
});
在第二个片段中
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.second_new, container, false);
String value = getArguments().getString("deviceInst");
System.out.println("TTTT"+ value);
答案 0 :(得分:2)
在第一个片段中,您传递int
作为参数。
bundle.putInt("deviceInst",viewId);
然后,在你的第二个片段中,你试图通过使用来获得该论点
getArguments().getString("deviceInst")
哪个会失败,所以要获得你传递的参数,你需要使用getArguments().getInt("deviceInst")
为了封装所需的数据,一个好的建议是在片段中使用需要数据的静态newInstance()
方法。
这是关于它的帖子。
https://plus.google.com/+AndroidDevelopers/posts/bCD7Zvd945d
答案 1 :(得分:0)
您需要更改
int value = getArguments().getInt("deviceInst");
而不是
String value = getArguments().getString("deviceInst");
答案 2 :(得分:0)
您需要在代码中进行以下更改。
bundle.putString("deviceInst",editText.getText().toString());
然后在你的第二个片段中,你可以使用
获得该参数getArguments().getString("deviceInst")
此处 editText 是第一个片段中编辑文本的实例。
答案 3 :(得分:0)
As you have passed int in the bundle, you need to use getInt() in your receiver fragment.
For example:
SecondFrag secondFrag = new SecondFrag();
Bundle bundle = new Bundle();
bundle.putInt("deviceInst",viewId);
secondFrag.setArguments(bundle);
getFragmentManager().beginTransaction().add(R.id.total_frame_content, secondFrag).commit();
In receiver fragment
String value = getArguments().getInt("deviceInst");