Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > onActivityResult не всегда вызывается


Автор: unclebenedict 20.4.2012, 20:14
Всем привет, столкнулся с такой прблемой, есть приложение на андрой оно использует 3 Activity (MainActivity,FirstActivity,SecondActivity). И работает по следующей схеме: MainActivity вызывает FirstActivity 

Код

startActivityForResult(new Intent(this,FirstActivity.class),10);


FirstActivity что то делает и в конце задает какие то данные, отваливается

Код

Intent resultIntent = new Intent();
resultIntent.putExtra("ByteData", data);
setResult(Activity.RESULT_OK, resultIntent);
finish();


по идее бы в MainActivity должен был бы вызваться onActivityResult ,но почему то, он вызывается не всегда. Иногда просто идет возврат на  MainActivity и тишина, при нажатии аппаратной кнопки back всегда отрабатывает как нужно. С чем может быть связана данная трабла ? finish() не так отрабатывает ?

Автор: unclebenedict 20.4.2012, 21:31
Кажется нашел в чем проблема, finish() в колбеке, поэтому и неработает, возникает вопрос тогда ,а как из колбека вызвать финишь для активити ?

Автор: javastic 23.4.2012, 11:22
Странно, я делаю именно с finish() в дочернем активити и все прекрасно работает. Проверь Log.

Автор: unclebenedict 23.4.2012, 20:30
Все не так просто smile Если например я в дочернем активити делаю меню и по одному из пунктов вызываю finish() то все хорошо закрывается и onActivityResult вызывается тоже хорошо, но я дергаю finish() из jpegCallback . Мне нужно что бы активити сделало снимок, и отвалилась. Стало быть делаю следующее

Код

PictureCallback jpegCallback = new PictureCallback () {
    public void onPictureTaken(byte[] data, Camera camera) {
        m_camSurface.cameraClose();
        Intent resultIntent = new Intent();
        resultIntent.putExtra("image",data);
        setResult(Activity.RESULT_OK, resultIntent);
        finish();
    }
}


и в таком варианте активити то закрывается, но onActivityResult не вызывается. Пробовал finishActivity() ,но так почему то даже активити не закрылся. 

Автор: unclebenedict 23.4.2012, 21:24
Действительно там была ошибка 

Код

!!! failed binder transaction !!!


Насколько понял это из за объема передаваемых данных, интересно обойти можно ли как то, или только сохранением на диск ?

Автор: javastic 24.4.2012, 09:39
Пиши на карту памяти.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)