2015-01-03 6 views
0

У меня есть два вида деятельности: activity_main и activity_takeapicture. Я начинаю намерение с activity_main, а другая операция делает снимок. Затем activity_takeapicture отправляет другое намерение с файлом обратно на activity_main. В activity_main следует использовать метод onActivityResult, чтобы поймать намерение, отправленное activity_takeapicture, и затем получить данные? Вот та часть, которая посылает намерение в activity_main:Android - передача Intents назад и вперед

Intent intent = new Intent(this, DisplayResult.class); 
    startActivity(intent); 

А вот «activity_takeapicture`:

Intent intent = new Intent(context, MainActivity.class); 
     intent.putExtra(Intent.EXTRA_STREAM, pictureFile); 
     startActivity(intent); 

EDIT: Я попробовал то, что вы, ребята сказали, но теперь onActivityResult не когда activity_takeapicture возвращает цель назад. Как это исправить?

+0

yeap, укажите код –

+0

Забавный, я искал то же самое вчера вечером. Я нашел это: [Как управлять стартовой активностью для результата на Android?] (Http://stackoverflow.com/questions/10407159/how-to-manage-start-activity-for-result-on-android) –

+0

@ ÜberLem Теперь у меня приложение просто сбой, без сообщения об ошибке. – SalmonKiller

ответ

0

Если activity_takeapicture сохраняет изображение на устройство SD-карте, вы можете используйте следующее.

intent.putExtra("SavedImageDirectory", filepath); //this will save the file path 

то в вашем activity_main вы можете использовать

//this will get the file path of the saved image 
String ImageDirectory = getIntent().getStringExtra("SavedImageDirectory"); 

//this will decode the filepath into a bitmap 
Bitmap bp = BitmapFactory.decodeFile(ImageDirectory); 

//this will display the bitmap on your imageview on the `activity_main` 
MyImageView.setImageDrawable(bp); 
0

вы можете сделать это так, но вам придется закрыть все намерения, которые вы оставили открытыми, чтобы избежать использования памяти, и когда вы вернетесь, вы не увидите более 9 000 действий. XD это не позволит использовать память, потому что это будет close te Активность только после того, как вы вернетесь к ней.

вы также можете использовать alnActivityResult, это лучшее решение, потому что вы не открывать слишком много деятельности и просто к вам и вашему пользователю

0

Попробуйте это:

В вашем классе inialize статическая переменная

private static final int CAM_REQUEST = 1; 

В вашей кнопки Слушатель Метод

public void onClick(View v){ 
    Intent takePictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(takePictureIntent, CAM_REQUEST); 
} 

И тогда в вашей деятельности Перекрыть этот метод:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == CAM_REQUEST){ 
     Bitmap thumbTaken = (Bitmap) data.getExtras().get("data"); 
     yourImageView.setImageBitmap(thumbTaken); 
    } 
} 

И не забудьте дать разрешения на использование КАМЕРЫ

Надеется, что это помогает !!!

0

Не использовать startActivity. Вместо этого используйте startActivityForResult.

Смежные вопросы