В Android: как получить переменные / данные с одного экрана на другой? - PullRequest
4 голосов
/ 27 февраля 2010

В Android: я пытаюсь перенести данные из одного занятия / экрана в другое.

Допустим, я добавляю два числа. Я создаю свой первый экран (xml) с двумя представлениями EditText, парой меток и кнопкой «ОК». Теперь я хочу добавить числа, которые я ввел в представления EditText. Допустим, я ввел 2 и 2 (2 + 2 = 4).

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

Ответы [ 4 ]

23 голосов
/ 27 февраля 2010

Первое занятие

Intent myIntent = new Intent();
myIntent.putExtra("key", "value");
startActivity(myIntent); 

Новая активность

Intent myIntent = getIntent(); // this is just for example purpose
myIntent.getExtra("key");

Ознакомьтесь с различными типами, которые вы можете использовать на Android Dev Site

Примечание. Если вы ищете способ совместного использования объекта / данных в глобальном масштабе, вы можете расширить класс Application. Посмотрите Как объявить глобальные переменные в Android? (ответ от Soonil)

4 голосов
/ 27 февраля 2010

Полагаю, вы запускаете «следующий экран» с помощью Intent (это так и должно быть).

В Intent вы можете передать дополнительные функции (putExtra), а в onCreate в «следующем действии» вы можете getIntent().getXExtra() (заменить X типом поля)

2 голосов
/ 27 февраля 2010

Взгляните на Некоторые примеры Intent (из общих задач и как их выполнять в Android):

в основном вы используете myIntent.putExtra (...) отправить данные (может быть String, Int, Boolean и т. д.) другому получающему концу (другой вид деятельности) ...

тогда результат будет передан обратно в метод onActivityResult () вызывающего Activity:

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    // See which child activity is calling us back.
    switch (resultCode) {
        case CHOOSE_FIGHTER:
            // This is the standard resultCode that is sent back if the
            // activity crashed or didn't doesn't supply an explicit result.
            if (resultCode == RESULT_CANCELED){
                myMessageboxFunction("Fight cancelled");
            } 
            else {
                myFightFunction(data);
            }
        default:
            break;
    }

H.

0 голосов
/ 19 июля 2012

Образец из моего проекта. Мы должны использовать Bundle для получения данных.

Используйте код в начале / первом задании, чтобы установить данные. Вы можете установить все виды типов данных, включая массивы.

Intent i = new Intent(this, LanguageSetting.class);
i.putExtra("From", 1);
startActivity(i);

Как получить данные, напишите следующий код в новом / втором упражнении.

Intent myIntent = getIntent();
Bundle b = myIntent.getExtras();
intCameFrom = b.getInt("From");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...