onPause在调用onActivityResult时直接触发

时间:2013-05-29 11:27:29

标签: android onpause

我在一项活动中使用onActivityResult()onPause()方法。 现在的问题是,只要onActivityResult()触发,它最终会调用onPause(),因此应用程序就会关闭。 如何防止这个问题? 代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
            && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        picturePath = cursor.getString(columnIndex);
        cursor.close();

        ImageView imageView = (ImageView) findViewById(R.id.imgView);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
    }
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}

2 个答案:

答案 0 :(得分:1)

为什么要在finish();上致电onPause()。删除它。

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    //finish();
}

当你调用finish()时,调用者Activity将被销毁,所以当调用Activity完成你的app正在关闭的任务时,因为没有Activity(任何更多)将处理结果。

只需删除 finish()

即可

答案 1 :(得分:1)

请使用布尔变量并在onActivityForResult方法上激活它。

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
if(!isActivate)
    finish();
}