我试图在activity和fragment之间传递值但是我得到了java.lang.NullPointerException。所以请告诉我如何 以正确的方式做到这一点。这是我的代码: -
活动类: -
String city = "one";
Fragmentone frag = new Fragmentone(city);
在Fragmentone课程中,我使用的是这样的东西: -
String mcity ;
public Fragmentone(String city) {
this.mcity = city;
}
Log.e("--", mcity);
所以这个日志给了我NullPointerException
提前谢谢
答案 0 :(得分:0)
你得到空指针异常的原因是因为:
Fragment的所有子类必须包含公共无参数 构造函数。该框架通常会重新实例化一个片段类 在需要时,特别是在状态恢复期间,并且需要能够 找到这个构造函数来实例化它。如果没有参数 构造函数不可用,某些运行时异常会发生 状态恢复期间的案例。
您无法通过片段中的构造函数传递参数。
要传递参数,您应该使用newInstance
。
如果要将mcity
传递给片段 - Fragmentone
,请将此代码包含在Fragmentone
String mCity;
public static newInstance(String mcity) {
Fragmentone fragmentOne = new Fragmentone();
Bundle argumentsBundle = new Bundle();
argumentsBundle.putString("mcityKey", mcity);
fragmentOne.setArguments(argumentsBundle);
return fragmentOne;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
String mCity = getArguments().getString("mcityKey");
Log.i("city : ", mcity);
}
现在在活动课程中你可以这样做,
String city = "one";
Fragmentone frag = new Fragmentone(city);