Я создаю собственный массив с элементом.Затем я попытался повернуть экран, произошел сбой приложения, показать ошибку: java.lang.NullPointerException: попытка вызвать виртуальный метод int java.util.ArrayList.size () для ссылки на пустой объект.Я попытался найти ошибки и обнаружил, что эта строка кода не работает:
arrayListPatientInfo = savedInstanceState.getParcelableArrayList ("key");
Я пытался найти помощь во многих источниках, но не дал результатов.Я хочу знать, где я был не прав?
Кодовая позиция:
public class RecyclerViewItemPatientInfo implements Parcelable {
private String hotenbn;
private String tenbenh;
private String namsinh;
private String khoadt;
private String ngayvaovien;
private String macongdan;
public RecyclerViewItemPatientInfo(String hotenbn, String tenbenh, String namsinh, String khoadt, String ngayvaovien, String macongdan) {
this.hotenbn = hotenbn;
this.tenbenh = tenbenh;
this.namsinh = namsinh;
this.khoadt = khoadt;
this.ngayvaovien = ngayvaovien;
this.macongdan = macongdan;
}
protected RecyclerViewItemPatientInfo(Parcel in) {
hotenbn = in.readString();
tenbenh = in.readString();
namsinh = in.readString();
khoadt = in.readString();
ngayvaovien = in.readString();
macongdan = in.readString();
}
public static final Creator<RecyclerViewItemPatientInfo> CREATOR = new Creator<RecyclerViewItemPatientInfo>() {
@Override
public RecyclerViewItemPatientInfo createFromParcel(Parcel in) {
return new RecyclerViewItemPatientInfo(in);
}
@Override
public RecyclerViewItemPatientInfo[] newArray(int size) {
return new RecyclerViewItemPatientInfo[size];
}
};
public String getHotenbn() {
return hotenbn;
}
public void setHotenbn(String hotenbn) {
this.hotenbn = hotenbn;
}
public String getTenbenh() {
return tenbenh;
}
public void setTenbenh(String tenbenh) {
this.tenbenh = tenbenh;
}
public String getNamsinh() {
return namsinh;
}
public void setNamsinh(String namsinh) {
this.namsinh = namsinh;
}
public String getKhoadt() {
return khoadt;
}
public void setKhoadt(String khoadt) {
this.khoadt = khoadt;
}
public String getNgayvaovien() {
return ngayvaovien;
}
public void setNgayvaovien(String ngayvaovien) {
this.ngayvaovien = ngayvaovien;
}
public String getMacongdan() {
return macongdan;
}
public void setMacongdan(String macongdan) {
this.macongdan = macongdan;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(hotenbn);
dest.writeString(tenbenh);
dest.writeString(namsinh);
dest.writeString(khoadt);
dest.writeString(ngayvaovien);
dest.writeString(macongdan);
}}
Кодовая активность:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
// recyclerview
private RecyclerView recyclerViewPatientInfo;
private RecyclerViewAdapterPatientInfo adapterPatientInfo;
private ArrayList<RecyclerViewItemPatientInfo> arrayListPatientInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arrayListPatientInfo = new ArrayList<>();
if (savedInstanceState == null) {
// add data to arrayListPatientInfo
dataAdd();
} else {
arrayListPatientInfo = savedInstanceState.getParcelableArrayList("key");
}
createRecyclerView();
}
private void createRecyclerView() {
// Code create recyclerview
}
private void dataAdd() {
// Code add data to arraylist
}
// Save && restore data on rotate screen
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outState.putParcelableArrayList("key", arrayListPatientInfo);
}}