我注意到我的应用程序只有在打开期间被系统关闭时才会出现nullpointexception。 看我在这里有Activity我从db获取数据并创建一个对象。然后我创建新的Fragment并在创建的对象之前设置为setter。并使用片段管理器显示片段。这里有任何问题,因为在onCreate方法字段中我的对象为null。我确信我选择了对象并且它不是空的。
我从db获取数据并创建Fragment
的活动public class ActivityForSingle extends AppCompatActivity {
Employee emloyee;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_for_single);
...
getEmployee(); // here I get emplyee from db and create employee object
SitePersonFragment f = new SitePersonFragment();
f.setEmpoyee(employee); // here emplyee is not null
getSupportFragmentManager().beginTransaction().add(R.id.frameForFragment, f, "USER_SITE").commit();
}
public class SitePersonFragment extends Fragment implements Update, DatePickerDialog.OnDateSetListener {
Employee employee;
setEmployee(Employee e){
this.emplyee = e;
//here e and employee is not null
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//here employee is null
// why??
}
发生什么事了?我无法调试因为app被销毁了。
答案 0 :(得分:0)
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//here employee is null
// why??
}
因为可能在设置Employee之前创建了视图。
此外,getEmployee()
...是否会返回一些内容?永远不会在您发布的代码中分配emloyee
。为什么不是null?
相关:Best practice for instantiating a new Android Fragment(需要Serializable或Parcelable类)
答案 1 :(得分:0)
我改变了'pracownikFragment to
f`