Показывать захваченное изображение, когда активность снова открывается

У меня есть действие, которое вызывает намерение камеры сделать снимок и назначить его в качестве изображения профиля. Активность работает нормально, за исключением того, что когда я нажимаю «Назад», а затем снова открываю активность, изображение больше не отображается.

Как я могу сделать так, чтобы он показывался каждый раз, когда пользователь открывает это действие? Вот мой код для этого действия

public class MyAccountActivity extends Activity {

private static final int CAMERA_REQUEST = 1888;
private TextView name;
private TextView userId;
private TextView address;
private TextView email;
private TextView phone;
private ImageButton profilePicture;
private Bitmap bm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_account);
    setUpViews();
Log.v("test","this is test: "+LoginActivity.user.getName());
}

private void setUpViews() {
    //setting up views

    //calling user details from User [] instance 

}

public void ViewPicture(View v) {
    Intent intent = new Intent(
    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, 
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI.getPath()); 
            startActivityForResult(intent, CAMERA_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
        super.onActivityResult(requestCode, resultCode, data);
                bm = (Bitmap) data.getExtras().get("data");
                profilePicture.setImageBitmap(bm);
                MediaStore.Images.Media.insertImage(getContentResolver(), bm, null, null);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
                byte[] b = baos.toByteArray();  
}

Я пытался позвонить profilePicture.setImageBitmap(bm) onResume(), но мое приложение вылетает. Буду признателен за любую оказанную помощь.


person Saeed Joul    schedule 20.10.2012    source источник
comment
попробуйте вызвать setupViews из onResume. Вы настраиваете все, когда создаете действие, но действие не воссоздается, когда вы возвращаетесь к нему, поэтому я не думаю, что изображение применяется. какой сбой вы получаете, когда пытаетесь установить изображение?   -  person toadzky    schedule 20.10.2012
comment
спасибо за быстрый ответ... я немедленно проверю ваше предложение и опубликую ответ. С Уважением   -  person Saeed Joul    schedule 20.10.2012
comment
@toadzky Это ничего не изменило. Я думаю, потому что я устанавливаю profilePicture при получении результата от намерения. Я подумал, могу ли я загрузить изображение из сохраненного места с телефона? это возможно? Спасибо еще раз   -  person Saeed Joul    schedule 20.10.2012


Ответы (1)


Сохраните захваченное изображение с некоторым путем uri

Uri uri = Uri.withAppendedPath(Uri.fromFile(context.getExternalFilesDir(null)), imageName.png);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri));

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

profilePicture.setImageUri(uri)
person Gaurav Vashisth    schedule 20.10.2012
comment
Приведенный выше код работает при вызове намерения камеры, верно? Итак, в моем ViewPicture()? - person Saeed Joul; 20.10.2012
comment
кажется, что это предложение является правильным решением, но, к сожалению, я не могу его правильно реализовать. С Уважением - person Saeed Joul; 20.10.2012
comment
ссылка Другое решение. - person Saeed Joul; 20.10.2012
comment
надеюсь, вы поняли, как это сделать сейчас, ссылка также дает то же решение - person Gaurav Vashisth; 21.10.2012