在我的活动中,我可以去画廊,并可以选择图像。之后我可以回到之前的sreecn。但是当我去画廊时,如果我不选择图像并按下后退按钮,我就无法前往前一个屏幕并且我强行关闭。如何解决这个问题,而不使用startActivity(intent)? 这是我的代码: 首先我定义为
private static final int ACTIVITY_REQUEST_PICK_ATTACHMENT = 1;
在活动结果代码:
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mAttachments = (LinearLayout) findViewById(R.id.attachments);
switch (requestCode) {
case ACTIVITY_REQUEST_PICK_ATTACHMENT:
Uri _uri = data.getData();
addAttachment(_uri);
Cursor cursor = getContentResolver()
.query(_uri,
new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
null, null, null);
cursor.moveToFirst();
File imageFilePath = new File(cursor.getString(0));
uris.add(imageFilePath);
names.add(imageFilePath.getName());
Log.v("imageFilePath", imageFilePath.toString());
break;
我在这里打电话给你:
private void onAddAttachment2(final String mime_type) {
// setContentView(R.layout.main);
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType(mime_type);
startActivityForResult(Intent.createChooser(i, null),
ACTIVITY_REQUEST_PICK_ATTACHMENT);
}
我的LogCat上的错误
05-20 13:16:39.809: E/AndroidRuntime(374): at my.mail.SenderActivity.onActivityResult(KepenekActivity.java:294)
当我双击错误时,它显示行
Uri _uri = data.getData();
从逻辑上讲,这是真的,我的_uri是空的,我怎样才能在这个最终状态显示前一个屏幕,这是我的问题。
答案 0 :(得分:1)
您需要添加结果代码检查。
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mAttachments = (LinearLayout) findViewById(R.id.attachments);
switch (requestCode) {
case ACTIVITY_REQUEST_PICK_ATTACHMENT:
if (resultCode == RESULT_OK) { // <------ THIS LINE IS IMPORTANT
Uri _uri = data.getData();
addAttachment(_uri);
Cursor cursor = getContentResolver()
.query(_uri,
new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
null, null, null);
cursor.moveToFirst();
File imageFilePath = new File(cursor.getString(0));
uris.add(imageFilePath);
names.add(imageFilePath.getName());
Log.v("imageFilePath", imageFilePath.toString());
}
break;
如果按后退按钮而不是选择某些内容,resultCode将设置为RESULT_CANCELLED而不是RESULT_OK。在任何一种情况下,您都可以使用这种区别来做任何您需要的事情。