Урок 29. Вызываем Activity и получаем результат. Метод startActivityForResult
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
так тогда ни колбек ни ивент не помогут))) если другое приложение, да достаточно того что контексты разные, так что здесь никак кроме как использования "транспорта" через файл. Даже рекомендую написать один объект в одном и втором приложение (одинаковый) и делать сериализацию-десериализацию в файл.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Здравствуйте. Пишу программу, суть которой в том, чтобы при запуске выбрать контакт из телефонной книги и проводить в дальнейшем с ним манипуляции. Исходный код:
Но по каким-то причинам после выбора контакта ничего не происходит.Метод OnActivityResult вообще не вызывается. Вроде бы делаю всё, как в уроке, только вместо своего Activity вызываю системный. Не подскажете, как это починить?
Код: Выделить всё
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent pickIntent = new Intent(Intent.ACTION_GET_CONTENT);
pickIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
startActivityForResult(pickIntent, 1);
}
protected void OnActivityResult(int requestCode, int resultCode, Intent data)
{
Uri contact = data.getData();
Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show();
}
}
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Мне кажется не к чему создавать новый Intent во втором активити, ведь он уже есть (он открыл это активити) и его можно взять и положить туда строку.
setResult(RESULT_OK, getIntent().putExtra("name", etl.getText().toString()));
setResult(RESULT_OK, getIntent().putExtra("name", etl.getText().toString()));
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Подскажите пожалуйста, как можно реализовать передачу данных между разными приложениями ?
Например, когда приложение1.Активити1 выполняет startActivity() (с передачей данных) и открывается другое приложение2.Активити2. После закрытия приложение2.Активити2 другие данные передаются в приложение1.Активити1. Предполагаю что нужно использовать BroadcastReceiver и Service.
Например, когда приложение1.Активити1 выполняет startActivity() (с передачей данных) и открывается другое приложение2.Активити2. После закрытия приложение2.Активити2 другие данные передаются в приложение1.Активити1. Предполагаю что нужно использовать BroadcastReceiver и Service.
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Много зависит от передаваемых данных.elron писал(а):Подскажите пожалуйста, как можно реализовать передачу данных между разными приложениями ?
Например, когда приложение1.Активити1 выполняет startActivity() (с передачей данных) и открывается другое приложение2.Активити2. После закрытия приложение2.Активити2 другие данные передаются в приложение1.Активити1. Предполагаю что нужно использовать BroadcastReceiver и Service.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Данные типа int и String.KamiSempai писал(а):Много зависит от передаваемых данных.elron писал(а):Подскажите пожалуйста, как можно реализовать передачу данных между разными приложениями ?
Например, когда приложение1.Активити1 выполняет startActivity() (с передачей данных) и открывается другое приложение2.Активити2. После закрытия приложение2.Активити2 другие данные передаются в приложение1.Активити1. Предполагаю что нужно использовать BroadcastReceiver и Service.
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Можно через setResult(int resultCode, Intent data).
Вызванная активити вызывает этот метод и передает Intent с Extras которые содержат нужные данные.
Вызванная активити вызывает этот метод и передает Intent с Extras которые содержат нужные данные.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Тоже не совсем понял смысл создания нового объекта Intent во втором активити, если можно положить данные в пришедший интент из первого:
вместо Intent intent = new Intent();
написать Intent intent = getIntent();
При варианте создания нового Intent-а есть какие-то дополнительные возможности? В чем разница?
вместо Intent intent = new Intent();
написать Intent intent = getIntent();
При варианте создания нового Intent-а есть какие-то дополнительные возможности? В чем разница?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
getIntent() возвращает интент который использовался для запуска активити. Он может быть заполнен любыми данными, о которых вы можете и не подозревать, что бы исключить возможность передачи данных, которые вы не собирались передавать, лучше использовать новый "чистый" Intent.Johanspb писал(а):Тоже не совсем понял смысл создания нового объекта Intent во втором активити, если можно положить данные в пришедший интент из первого:
вместо Intent intent = new Intent();
написать Intent intent = getIntent();
При варианте создания нового Intent-а есть какие-то дополнительные возможности? В чем разница?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Здравствуйте!
При генерации метода onActivityResult Eclipse выдает следующее
В коде урока отсутствует строка 4.
Собственно почему мы не вызываем конструктор суперкласса?
При генерации метода onActivityResult Eclipse выдает следующее
Код: Выделить всё
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
}
Собственно почему мы не вызываем конструктор суперкласса?
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
создайте issue.Trelp писал(а):Здравствуйте!
При генерации метода onActivityResult Eclipse выдает следующееВ коде урока отсутствует строка 4.Код: Выделить всё
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); }
Собственно почему мы не вызываем конструктор суперкласса?
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Это не конструктор а метод. Его можно и не вызывать если нет необходимости как в данном случае (так как он ничего не делает) или в случае если мы хотим полностью поменять принцип работы метода.Trelp писал(а):Здравствуйте!
При генерации метода onActivityResult Eclipse выдает следующееВ коде урока отсутствует строка 4.Код: Выделить всё
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); }
Собственно почему мы не вызываем конструктор суперкласса?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Маленькая заметка: код лучше писать до "super.onActivityResult(requestCode, resultCode, data);" или после ?!
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Не заметка, а вопрос =)
Надо понимать что это вообще за страшное слово "super" и почему его вызывают, тогда и вопрос отпадет. А если искать не хочется, то юзайте после. В 90 процентах случаев, это будет работать, в 10 нет.
Надо понимать что это вообще за страшное слово "super" и почему его вызывают, тогда и вопрос отпадет. А если искать не хочется, то юзайте после. В 90 процентах случаев, это будет работать, в 10 нет.
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Не могу переслать int.
В MainActivity:
int age = data.getIntExtra("age", 0);
В отправном Activity:
intent.putExtra("age", Integer.ValueOf(etAge.getText().toString()));
В MainActivity:
int age = data.getIntExtra("age", 0);
В отправном Activity:
intent.putExtra("age", Integer.ValueOf(etAge.getText().toString()));
Завтра будет.
Лучше.
Лучше.
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
попробуйте вместо ValueOf использовать parseIntSky-VIN писал(а):Не могу переслать int.
В MainActivity:
int age = data.getIntExtra("age", 0);
В отправном Activity:
intent.putExtra("age", Integer.ValueOf(etAge.getText().toString()));
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Не помогло.klblk писал(а):попробуйте вместо ValueOf использовать parseInt
Пишу
intent.putExtra("age", Integer.parseInt(etAge.getText().toString()));
Error: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {d.swan/d.swan.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x2693
И еще: подскажите как реализовать возврат к MainActivity без вылета, при нажатии кнопки "назад".
Завтра будет.
Лучше.
Лучше.
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Во втором активити при нажатии на кнопку должно быть примерно так:Sky-VIN писал(а):Не помогло.klblk писал(а):попробуйте вместо ValueOf использовать parseInt
Пишу
intent.putExtra("age", Integer.parseInt(etAge.getText().toString()));
Error: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {d.swan/d.swan.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x2693
И еще: подскажите как реализовать возврат к MainActivity без вылета, при нажатии кнопки "назад".
[syntax=java]Intent intent = new Intent();
intent.putExtra("age", 11);
setResult(Activity.RESULT_OK, intent); // или Activity.RESULT_CANCELED
finish(); // нужно, если своя кнопка(button)[/syntax]
В первом:
[syntax=java]@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// лучше ещё добаваить проверку resultCode на Activity.RESULT_CANCELED или Activity.RESULT_OK
if (data == null) {return;}
//requestCode используется, чтобы отличать друг от друга пришедшие результаты
if (requestCode == 9) {
int name = data.getIntExtra("age", -1);
// ..
}
}[/syntax]
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты
Re: Урок 29. Вызываем Activity и получаем результат. Метод s
Дико извеняюсь!!!
Мой косяк. в TextView.setText не прописал преобразование из int в String.
Все работает. Спасибо!!!
Мой косяк. в TextView.setText не прописал преобразование из int в String.
Все работает. Спасибо!!!
Завтра будет.
Лучше.
Лучше.