【问题标题】:onPause fires directly when called onActivityResult调用 onActivityResult 时直接触发 onPause
【发布时间】:2013-05-29 11:27:28
【问题描述】:

我在一项活动中使用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();
}

【问题讨论】:

  • 代码先生在哪里?把你的代码放在这里
  • 为什么在onPause=里面调用finish()=

标签: android onpause


【解决方案1】:

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

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

【讨论】:

  • @JeetenParmar 什么工作以及如何工作.. 你能解释一下.. 吗?
【解决方案2】:

为什么你在onPause() 上打电话给finish();。删除它。

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

当您调用finish() 时,调用者 Activity 将被销毁,因此当被调用的 Activity 完成您的应用程序正在关闭的任务时,因为没有 Activity(不再)来处理结果。

所以只需删除 finish()

【讨论】:

  • 抱歉,我是安卓开发新手。上传图片后,我将进行新的活动。所以如果有人点击移动设备的后退按钮,那么它会关闭应用程序吗???
  • 是的。您的应用程序将关闭。但仅当当前 Activity 是 ActivityStack 中的最后一个时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多