Идентификатор, отправленный как int с намерением другой деятельности, всегда равен нулю - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь отправить идентификатор как 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 при его получении.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 14 сентября 2018

Вы просто должны прислать дополнительные услуги, пока говорите о своем намерении.

Как это:

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("Variable name", "Value you want to pass");
startActivity(intent);

Теперь с помощью метода OnCreate вашего SecondActivity вы можете получить дополнительные данные, подобные этому.

Если отправленное вами значение было в int :

int value = getIntent().getIntExtra("Variable name which you sent as an extra", defaultValue(you can give it anything));

Пример:

int value = getIntent().getIntExtra("ID", 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...