Возврат данных из нескольких операций в основную деятельность - PullRequest
1 голос
/ 11 апреля 2020

все. Я начал писать (1 месяц) приложения Android, и я довольно новичок в этом.

У меня есть действие X. В этом упражнении X у меня есть четыре разные кнопки, которые вызывают четыре разных действия. В этих трех действиях у меня есть кнопка, и я возвращаю данные в действие X после нажатия кнопки. Кроме того, в упражнении X я не могу назвать все три актива. Я мог бы назвать только 1,3 или только 2,3. Я много смотрел, но не смог найти то, что искал.

РЕДАКТИРОВАТЬ: когда я поставил finish(); на мероприятие 1,2,3, я мог вызвать одну из активностей (предположим, что вызвана первая) и может захватывать данные и возвращать действие X, но когда я начал вызывать другое (предполагается, что вызвано действие 2), я мог go выполнить это действие, но я не могу вернуться из него, поскольку оно знает, куда возвращать.

Это то, что я ищу:

Занятие X-> Первое занятие -> вернуть данные1 в X

Упражнение X-> Второе занятие -> вернуть данные2 в X

Занятие X-> 3-е занятие -> вернуть данные3 в X

Занятие X-> отправить данные1 + данные2 + данные3 в 4-е занятие

Я начал свои три действия в Activity X как в методе onClick (data_global глобально для класса X)

case R.id.btn1:
       Intent i = new Intent(this, Activity1.class);
       startActivityForResult(i, 200);
       break;
case R.id.btn2:
       i = new Intent(this, Activity2.class);
       startActivityForResult(i, 201);
       break;
case R.id.btn3:
       i = new Intent(this, Activity3.class);
       startActivityForResult(i, 202);
       break;
case R.id.btn4:
       i = new Intent(this, Activity4.class);
       i.putExtra("Extra", data_global);
       startActivity(i);
       break;

Я беру свои данные отсюда Activity X в onActivityResult метод:

switch (requestCode) {
        case (200): {
            if (resultCode == Activity.RESULT_OK) {
                if (data.getStringExtra("Extra1").length() != 0) {
                    data_global += data.getStringExtra("Extra1");
                }
            }
            break;
        }
        case (201): {
            if (resultCode == Activity.RESULT_OK) {
                if (data.getStringExtra("Extra2").length() != 0) {
                    data_global += data.getStringExtra("Extra2");
                }
            }
            break;
        }
        case (202): {
            if (resultCode == Activity.RESULT_OK) {
                if (data.getStringExtra("Extra3").length() != 0) {
                    data_global += data.getStringExtra("Extra3");
                }
            }
            break;
        }

И любой код действия 1, 2 или 3 выглядит следующим образом: (X находится в конце Extra, ссылаясь на 1,2,3)

case R.id.btnSave:
            Intent resultIntent = new Intent();
            resultIntent.putExtra("ExtraX", "name");
            setResult(Activity.RESULT_OK, resultIntent);
            finish();
            break;
* 10 32 * Как я могу решить мою проблему? Большое спасибо.

1 Ответ

1 голос
/ 11 апреля 2020

Вам необходимо указать текущее и конечное действие в своем намерении в каждом действии, как показано ниже

case R.id.btnSave:
    Intent resultIntent = new Intent(Activity1.this, MainActivity.class);

, и повторить это для других действий.

...