我有 Activity A 启动 Activity B 和 Activity B 启动Galleryapp 来选择图像。我的问题是,当我选择图像(或按取消)时,我返回到活动 A,尽管活动 B 启动了该过程并且应该处理整个结果。
此外,当我返回到 Activity A 后,Eclipse 将不再跳入断点。当我启动 Activity B 并按下按钮再次打开 galleryapp 时,将返回正确的结果,一切正常。
谁能向我解释这里发生了什么?我搜索了很长时间,但我得到的唯一提示是,由于内存问题,活动 B 可能已从堆栈中删除。但是,为什么要删除活动 B 而不是活动 A?我真的需要解决这个问题,以便在选择图像时,galleryapp 每次都会返回到 Activity B。
@Override
public void onClick(View v) {
if(v.getId() == btnOk.getId())
{
handleOKClick();
}
else if(v.getId() == channelThumbnail.getId())
{
Intent pickImageIntent = new Intent(Intent.ACTION_PICK);
pickImageIntent.setType("image/*");
startActivityForResult(pickImageIntent, PICK_IMAGE_RESULT);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == PICK_IMAGE_RESULT && resultCode == RESULT_OK)
{
Uri selectedImage = data.getData();
try {
InputStream imageStream = getContentResolver().openInputStream(selectedImage);
Bitmap bmp = BitmapFactory.decodeStream(imageStream);
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
//Set Maximum size of an Thumbnail to 512x512
bmp = Utility.limitBitmapToBoundries(bmp, 256, 256);
this.channelThumbnail.setImageBitmap(bmp);
this.channelThumbnail.setBackgroundColor(Color.TRANSPARENT);
AddYamasChannelActivity.this.curSelectedImage = bmp;
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
}
}
private void handleOKClick()
{
//Check if Image was already selected, otherwise prompt the user to select an image
if(this.curSelectedImage == null)
{
Utility.showWarningDialog(this, R.string.error, R.string.alertdialog_addyamaschannel_no_image);
return;
}
//Check if Channelname is longer than 3 Characters
String channelName = et.getText().toString();
if(channelName.length() >= 3)
{
pb.setVisibility(View.VISIBLE);
et.setEnabled(false);
btnOk.setEnabled(false);
AddYamasChannelAsyncTask addYamasChannelAsyncTask= new AddYamasChannelAsyncTask();
addYamasChannelAsyncTask.execute(channelName, googleAccountName);
}
else
Toast.makeText(AddYamasChannelActivity.this, R.string.alertdialog_channelname_too_short, Toast.LENGTH_SHORT).show();
}