一个片段与另一个片段之间的通

时间:2016-06-10 06:41:06

标签: java android

我是片段新手。我在第一个片段中添加了两个编辑文本,我想将该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);

4 个答案:

答案 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");