通过意图以int形式发送给另一个活动的ID始终为零

时间:2018-09-13 23:41:24

标签: java android android-intent

我正在尝试将ID作为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);
    }
}

并尝试在其他活动中获取ID:

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。

请帮助。

0 个答案:

没有答案