如何在Activity和Fragment之间传递值

时间:2016-04-24 17:31:15

标签: java android-activity fragment

我试图在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

提前谢谢

1 个答案:

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

see more examples and details