Страница 1 из 3

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

Добавлено: 31 окт 2011, 03:00
damager82

В этом уроке:


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




Click here to read this article!

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

Добавлено: 12 янв 2012, 20:58
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);
}
вроде за работало.
Может есть какой-то более простой метод проверки на отсутствие данных?

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

Добавлено: 13 янв 2012, 00:43
AiVeR
Привет. Я пробовал проверять по длине, тоже работает. Если 0 - пусто, в других случаях поле не пустое.

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

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

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

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

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

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

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

Добавлено: 29 июл 2012, 20:39
Artemko
А можно ли сразу вызвать 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));
Не получается отправить данные, но получить результат удается)

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

Добавлено: 29 июл 2012, 21:17
andev
Попробуйте так :)

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

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

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

Добавлено: 29 июл 2012, 23:15
Artemko
спасибо заработало)

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

Добавлено: 30 июл 2012, 00:36
andev
вы поняли почему?

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

Добавлено: 02 авг 2012, 14:25
Jack_killer
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";
	}

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

Добавлено: 02 авг 2012, 14:52
math64
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.

force close

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

force close

Добавлено: 12 окт 2012, 02:13
wowancoder
Разобрался. Оказывается забыл прописать в манифесте

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

Добавлено: 07 ноя 2012, 22:01
brucemax
Интересность!!! если ставить в манифесте:

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

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

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

Добавлено: 08 янв 2013, 16:43
VitalyV
Здравствуйте!

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

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

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

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

Добавлено: 08 янв 2013, 18:59
rezak90
что значит "не явно"? но в любом случае существуют ивенты и колбек методы, вариантов как реализовать такое куча.

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

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

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

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

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

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

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

Добавлено: 08 янв 2013, 22:25
rezak90
как я и писал следует попробовать callback или event, если они не проконают то тогда промежуточный транспорт в виде public static переменной или же singlton'a

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

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

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