Реализация двух действий и передача информации между ними - PullRequest
0 голосов
/ 07 декабря 2011

Хорошо, во-первых, терпите меня, поскольку я относительно новичок в разработке Android.

Итак, вот ситуация. У меня есть родительское (основное) действие, которое записывает данные. Скажем для простоты, что он содержит поле для редактирования. Теперь дочернее (под) действие содержит одно текстовое представление, которое в настоящее время пустое. По умолчанию при запуске приложения основное действие запускается. Теперь, когда пользователь вводит свое имя в поле редактирования и нажимает кнопку, я хочу, чтобы это имя было добавлено к текстовому представлению во втором упражнении. Затем я могу переключиться на второй вид деятельности и увидеть это изменение. Затем я нажимаю кнопку «Назад» и ввожу другое имя. Когда я снова переключаюсь на второе занятие, я должен увидеть это изменение и так далее. Очевидно, что сценарий включает в себя не только поля редактирования и кнопки, но я думаю, что идея та же самая.

Итак, по сути, я хочу знать:

  1. Как мне переключаться между действиями и хранить данные по каждому. Я должен был бы создать оба действия во время выполнения?
  2. Как передать данные между этими действиями?
  3. Когда я нажимаю кнопку «Назад», когда второе упражнение находится в фокусе, как мне остановить это закрытие?

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 07 декабря 2011

У вас есть способы, которыми вы можете сделать это.Вы можете передать данные через намерение с помощью:

Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("name", nameText);

. Другой подход заключается в использовании общих настроек, к которым можно обращаться через все ваше приложение.

Если вы хотите, чтобы кнопка «Назад» не закрываласьвашей активности вам нужно переопределить метод backButtonPressed и снова запустить actionA (используйте флаги намерений, чтобы не запускать новые экземпляры все время).

Что касается сохранения состояния активности, прочитайте это: http://developer.android.com/guide/topics/fundamentals/activities.html#SavingActivityState

0 голосов
/ 07 декабря 2011

Вы делаете это с помощью Intents. Они в основном запускают другое действие и имеют дополнительный бонус - возможность добавлять к ним дополнительную информацию, которую можно получить в другом действии.

В своей основной деятельности, когда вы нажимаете кнопку, добавьте следующее:

EditText edittext = (EditText) findViewById(R.id.editTextID);
Intent startSub = new Intent(this, SubActivity.class);
String input = edittext.getText().toString();
startSub.putExtra("name", input);
startActivity(startSub);

Это запускает вашу суб-деятельность. Теперь в subActivity вы можете получить эти значения в вашем методе onCreate () следующим образом:

Bundle extras = getIntent().getExtras();
    // make sure there is actually extra data
    if (extras != null) {
        String theName = extras.getString("name");
        TextView text = (TextView) findViewById(R.id.yourTextView);
        text.setText(theName);
    }

Когда вы вернетесь и заново введете новое имя, Intent будет снова создано, что означает, что ваше текстовое поле снова изменится.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...