我想在两个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
答案 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");
}