java.lang.NullPointerException при использовании SavedInstanceState.getParcelableArrayList - PullRequest
0 голосов
/ 09 февраля 2019

Я создаю собственный массив с элементом.Затем я попытался повернуть экран, произошел сбой приложения, показать ошибку: 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);
}}

1 Ответ

0 голосов
/ 09 февраля 2019

Хорошо, миссия завершена

Я добавляю android: configChanges = "клавиатура скрытая | ориентация | размер экрана" в манифесте действия ~ и все работает пока.

...