在两个片段之间传递数据

时间:2017-06-30 09:49:22

标签: android fragment

我想在两个Fragment之间传递数据我将此方法添加到发送数据的片段中。

 public void sendData(){
    //Put the value
        FragmentA fragmentA = new 
        FragmentA ();

        String tag = data.TAGS;
        Bundle bundle = new Bundle();

        bundle.putString("TAG", tag);
        fragmentA.setArguments(bundle);
        //Inflate the fragment
        FragmentManager fragmentManager=getFragmentManager();
        fragmentManager.beginTransaction()
            .add(R.id.container, fragmentA)
            .addToBackStack(null)
            .commit();
}

并在收到信息的Fragment中我将此代码添加到onCreateView

                String tag = getArguments().getString("TAG");
                Log.d("valeur", "valeur=" + tag);

问题是我使用LOGGer获取数据但应用程序崩溃了,我在getString方法中收到了此消息,

Exception: Attempt to invoke virtual method 'java.lang.String 
android.os.Bundle.getString(java.lang.String)' on a null object reference

2 个答案:

答案 0 :(得分:0)

<强> SOLUTION:

if(getArguments()!=null){

// log your data here

}

答案 1 :(得分:0)

你在setArgument中犯了错误

这是您的修改代码

Bundle bundle = new Bundle();
bundle.putString("TAG", tag);
FragmentManager fragmentManager=getFragmentManager();
//You need to put setArgument Here
fragmentA.setArguments(bundle);
fragmentManager.beginTransaction()
.add(R.id.container, fragmentA)
.addToBackStack(null)
.commit();

在你的接收片段中你需要检查getArgument是否在onCreateView()方法中填充了值

if(getArgument != null){
String tag = getArguments().getString("TAG");
}