Урок 29. Вызываем Activity и получаем результат. Метод startActivityForResult

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 29. Вызываем Activity и получаем результат. Метод startActivityForResult

Сообщение damager82 » 31 окт 2011, 03:00

В этом уроке:


- вызываем Activity с возвратом результата




Click here to read this article!
Последний раз редактировалось damager82 30 мар 2021, 12:06, всего редактировалось 9 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Slavko
Сообщения: 6
Зарегистрирован: 12 янв 2012, 02:46

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение Slavko » 12 янв 2012, 20:58

Привет всем.
Опять есть проблемка с проверкой на отсутствие данных.
простая конструкция, почему-то, не работает
if (data == null) {return;}
попробовал из 19 урока
if (TextUtils.isEmpty(data.getStringExtra("name")))
tvName.setText("1. Enter your name "+ data.getStringExtra("name"));
else{
String name = data.getStringExtra("name");
tvName.setText("2. Your name is 2 " + name);
}
вроде за работало.
Может есть какой-то более простой метод проверки на отсутствие данных?

AiVeR
Сообщения: 10
Зарегистрирован: 08 янв 2012, 12:26

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение AiVeR » 13 янв 2012, 00:43

Привет. Я пробовал проверять по длине, тоже работает. Если 0 - пусто, в других случаях поле не пустое.

Daniil
Сообщения: 25
Зарегистрирован: 15 июл 2012, 13:01

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение Daniil » 24 июл 2012, 16:27

Попробуем подытожить. В MainActivity мы создали Intent с явным указанием на класс NameActivity. Запустили этот Intent с помощью метода startActivityForResult. NameActivity отобразилось, мы ввели имя и нажали кнопку. Создался Intent, в который поместилось введенное нами имя. Метод setResult знает, что Intent надо вернуть в Activity, которое выполнило вызов startActivityForResult, т.е. – MainActivity. В MainActivity за прием результатов с вызванных Activity отвечает метод onActivityResult. В нем мы распаковали Intent и отобразили полученные данные в TextView.
Если есть возможность , не могли бы сделать, схему аналогичной в Уроке 24. Матерьял ясен, но для наглядности было бы просто замечательно! Спасибо.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение damager82 » 24 июл 2012, 17:38

Daniil писал(а):Если есть возможность , не могли бы сделать, схему аналогичной в Уроке 24. Матерьял ясен, но для наглядности было бы просто замечательно! Спасибо.
Ок, я добавил в конец урока несложную схему.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Daniil
Сообщения: 25
Зарегистрирован: 15 июл 2012, 13:01

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение Daniil » 27 июл 2012, 14:09

damager82 писал(а):Ок, я добавил в конец урока несложную схему.
То что нужно, спасибо.

Artemko
Сообщения: 26
Зарегистрирован: 16 июл 2012, 15:09

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение Artemko » 29 июл 2012, 20:39

А можно ли сразу вызвать Activity для получения результата и просто передать данные с помощью Intent(урок 28).
Делаю так:

Код: Выделить всё

          Intent intent;
	  intent = new Intent(this, ActivityTwo.class);
	  startActivityForResult(intent, B1);
          //отправляю данные (Int)
	  intent.putExtra("seek", Count[1]);
Принимаю данные:

Код: Выделить всё

    Intent intent = getIntent();
    seekbar.setProgress(intent.getIntExtra("seek", 0));
Не получается отправить данные, но получить результат удается)

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение andev » 29 июл 2012, 21:17

Попробуйте так :)

Код: Выделить всё

          Intent intent;
          intent = new Intent(this, ActivityTwo.class);
          intent.putExtra("seek", Count[1]);
          startActivityForResult(intent, B1);          

Artemko
Сообщения: 26
Зарегистрирован: 16 июл 2012, 15:09

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение Artemko » 29 июл 2012, 23:15

спасибо заработало)

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение andev » 30 июл 2012, 00:36

вы поняли почему?

Jack_killer
Сообщения: 21
Зарегистрирован: 30 янв 2012, 21:15

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение Jack_killer » 02 авг 2012, 14:25

Slavko писал(а):Привет всем.
Опять есть проблемка с проверкой на отсутствие данных.
простая конструкция, почему-то, не работает
if (data == null) {return;}
попробовал из 19 урока
if (TextUtils.isEmpty(data.getStringExtra("name")))
tvName.setText("1. Enter your name "+ data.getStringExtra("name"));
else{
String name = data.getStringExtra("name");
tvName.setText("2. Your name is 2 " + name);
}
вроде за работало.
Может есть какой-то более простой метод проверки на отсутствие данных?
Давно уже спрашивали, может где-то и ответили, но может кому-то пригодиться.
У String есть метод equals().
public boolean equals (Object object)

Код: Выделить всё

String a;
String b;
String c;
	if (a.equals(b)){     //если проверять отсутствие данных, то вместо b ставим "" (пустые кавычки без пробела)
		c= "a = b";
	}else{
		c="a != b";
	}

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение math64 » 02 авг 2012, 14:52

Jack_killer писал(а): У String есть метод equals().
public boolean equals (Object object)

Код: Выделить всё

String a;
String b;
String c;
	if (a.equals(b)){     //если проверять отсутствие данных, то вместо b ставим "" (пустые кавычки без пробела)
		c= "a = b";
	}else{
		c="a != b";
	}
Если a = null - такая конструкция работать не будет. Чтобы учесть все ньюансы, и есть TextUtils.

wowancoder
Сообщения: 2
Зарегистрирован: 11 окт 2012, 13:53

force close

Сообщение wowancoder » 12 окт 2012, 02:08

Подскажите пожалуйста, в моём приложении при нажатии на кнопку в главном Activity происходит закрытие приложения, как это исправить и причиной какой ошибки это может быть?

wowancoder
Сообщения: 2
Зарегистрирован: 11 окт 2012, 13:53

force close

Сообщение wowancoder » 12 окт 2012, 02:13

Разобрался. Оказывается забыл прописать в манифесте

brucemax
Сообщения: 117
Зарегистрирован: 01 апр 2012, 16:09
Откуда: Минск
Контактная информация:

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение brucemax » 07 ноя 2012, 22:01

Интересность!!! если ставить в манифесте:

Код: Выделить всё

<activity
         ....
            android:launchMode="singleInstance"
        ....
</activity>
То срабатывание метода onActivityResult() происходит сразу с открытием этой новой активити, а не после возвращения из неё. (то есть мы не успеваем положить туда данные) Как же долго я искал этому объяснение..

VitalyV
Сообщения: 4
Зарегистрирован: 05 янв 2013, 19:15

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение VitalyV » 08 янв 2013, 16:43

Здравствуйте!

Почему то никак не получается получить результат, если вызываем через Intent НЕЯВНО - нет нужного конструктора (и методов) для Intent.

можно как то выкрутиться? Т.е. задача - запустить Activity неявно и затем получить из нее результат.

Или придется через сообщения это делать?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение rezak90 » 08 янв 2013, 18:59

что значит "не явно"? но в любом случае существуют ивенты и колбек методы, вариантов как реализовать такое куча.
R.id.team
Политика на форуме запрещена

VitalyV
Сообщения: 4
Зарегистрирован: 05 янв 2013, 19:15

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение VitalyV » 08 янв 2013, 22:13

rezak90 писал(а):что значит "не явно"? но в любом случае существуют ивенты и колбек методы, вариантов как реализовать такое куча.
т.е. при создании Intent писать класс не в явном виде, а в виде Action:

Intent intent = new Intent("org.dexpert.edit_cell");
startActivity(intent);

Общая задумка такая - есть таблица, при даблклике на ячейке создаю Intent и запускаю Activity, а система стандартно сама выдает, мол - "каким Activity хотите редактировать?" и выводит список инсталлированных в нее Activity для редактирования ячеек (по умолчанию инсталлирован простенький редактор, но кто-то потом может захотеть навороченный написать). По окончании основная программа получает отредактированную ячейку.

Т.е. это такая расширяемая программа - без перекомпиляции есть возможность менять поведение... И пока непонятно, как получить данные через запущенный Intent.

Есть еще одно - если ячейка была отредактирована новым редактором, то она и потом должна открываться через новый редактор. Наверное, это как то лучше через уведомления делать? Но вот запустится ли Activity (редактор) по уведомлению, если на тот момент приложение с этим Activity(редактором) не запущено?
Последний раз редактировалось VitalyV 08 янв 2013, 22:38, всего редактировалось 1 раз.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение rezak90 » 08 янв 2013, 22:25

как я и писал следует попробовать callback или event, если они не проконают то тогда промежуточный транспорт в виде public static переменной или же singlton'a
R.id.team
Политика на форуме запрещена

VitalyV
Сообщения: 4
Зарегистрирован: 05 янв 2013, 19:15

Re: Урок 29. Вызываем Activity и получаем результат. Метод s

Сообщение VitalyV » 08 янв 2013, 22:41

rezak90 писал(а):промежуточный транспорт в виде public static переменной или же singlton'a
У меня вызываемая Activity - в другом приложении, и об этом приложении ничего не известно.

Попробую Event...

Ответить