Я пытаюсь отправить идентификатор как int
и получить его от намерения в другой деятельности, но он возвращает ноль.
Это намерение в первом упражнении:
public class Main_page extends AppCompatActivity {
ListView PatientList;
Button BTaddPatient;
DBpatients db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_page);
PatientList = findViewById(R.id.PateintList);
BTaddPatient = findViewById(R.id.ADDpateint);
db = new DBpatients(this);
BTaddPatient.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Main_page.this, Add_patient_Activity.class);
startActivity(intent);
}
});
PatientList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Patient selected_patient = (Patient) parent.getItemAtPosition(position);
Intent intent = new Intent(getApplicationContext(), Update_patient.class);
intent.putExtra("ID", selected_patient.getId());
intent.putExtra("name", selected_patient.getName());
intent.putExtra("diagnose", selected_patient.getDiagnose());
startActivity(intent);
}
});
}
@Override
protected void onResume() {
super.onResume();
ArrayList<Patient> patients = db.getAllPatients();
PatientAdapter patientAdapter = new PatientAdapter(this, R.layout.item_pateint, patients);
PatientList.setAdapter(patientAdapter);
}
}
И пытается получить идентификатор в другой деятельности:
public class Update_patient extends AppCompatActivity {
DBpatients db;
EditText editName, editDiagnose;
Button UpdateBTN;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_patient);
final int id = getIntent().getExtras().getInt("ID");
db = new DBpatients(this);
editName = findViewById(R.id.EDname);
editDiagnose = findViewById(R.id.EDdiagnose);
UpdateBTN = findViewById(R.id.BTupdate);
Patient patient = db.getPatientByID2(id);
editDiagnose.setText(patient.getDiagnose());
editName.setText(patient.getName());
UpdateBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editName.getText().toString();
String diagnose = editDiagnose.getText().toString();
Patient newPatient = new Patient( id, name, diagnose);
db.UpdatePatient(newPatient);
Toast.makeText(Update_patient.this, "successfuly UPDATED", Toast.LENGTH_SHORT).show();
}
});
}
Это класс пациента:
public class Patient {
private String name;
private int id;
private String diagnose;
public Patient(String name, String diagnose) {
this.name = name;
this.diagnose = diagnose;
}
public Patient(int id, String name, String diagnose) {
this.name = name;
this.diagnose = diagnose;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDiagnose() {
return diagnose;
}
public void setDiagnose(String diagnose) {
this.diagnose = diagnose;
}
}
Приложение аварийно завершает работу и, используя отладчик, показывает, что ID = 0 при его получении.
Пожалуйста, помогите.