【发布时间】:2011-12-10 08:37:00
【问题描述】:
我的 onActivityResult 方法永远不会被调用。我使用的是安卓 2.2
我正在使用 Tabhost,其中 TabHosts 包含包含单个活动的 TabGroups。
我的个人活动之一运行以下意图
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), 0);
这会加载我的画廊应用程序,我使用默认的 android 画廊来选择一张图片,当我返回时,我的 onActivityResult 不会被称为我的活动。
看起来像这样 - 我在 if(resultCode == 0) 放置了一个断点,所以现在,我的 onActivityResult 的逻辑应该无关紧要
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == 0) {
if (requestCode == 0) {
Uri selectedImageUri = data.getData();
//OI FILE Manager
filemanagerstring = selectedImageUri.getPath();
//MEDIA GALLERY
selectedImagePath = getPath(selectedImageUri);
//DEBUG PURPOSE - you can delete this if you want
if(selectedImagePath!=null)
System.out.println(selectedImagePath);
else System.out.println("selectedImagePath is null");
if(filemanagerstring!=null)
System.out.println(filemanagerstring);
else System.out.println("filemanagerstring is null");
//NOW WE HAVE OUR WANTED STRING
if(selectedImagePath!=null)
System.out.println("selectedImagePath is the right one for you!");
else
System.out.println("filemanagerstring is the right one for you!");
}
}
}
生命周期函数经常被乱序调用,并且在选项卡主机/选项卡组中间歇性地调用活动,因此我检查了在图库关闭后调用了哪些生命周期函数(这会在我从 android 图库中选择图像时立即发生) )
唯一被调用的是我的 TabHost 活动中的onResume()。因此,我尝试将完全相同的 onActivityResult() 方法放入我的 TabHost 类以及 TabActivity 类中。在方法开头的同一位置有一个断点。
这些类都没有被调用。
我现在正在画一个空白,如果没有内置的接收方法响应它,我如何从我的应用程序中的图库应用程序中获取结果。
由于我知道我的主 TabHost 调用了 onResume(),我尝试添加 Intent graphics = getIntent(); 以查看它是否会接收来自画廊选择的数据,但它不会,所以我不知道该怎么做onResume() 方法中的逻辑。
欢迎解决! :)
【问题讨论】:
-
你确定在调用 startActivityForResult(..) 的同一个活动中有 onActivityResult 吗?
-
是的,我还在 tabgroup 和 tabactivity 页面中添加了断点,以查看是否调用了它们中的任何一个。具有讽刺意味的是,如果调用不正确,它会抛出一个 ActivityNotFoundException ,这也不起作用:(它根本没有被调用
-
只是为了好玩,您是否尝试过创建一个测试项目并将您的意图与上述代码中的 onActivityResult 一起复制以确保它可以正常工作。如果它不起作用,那么。您的手机/模拟器有些时髦。如果它确实有效,则说明您的代码中忽略了某些内容,或者您正在调用的活动没有正确调用 setResult(..)
标签: android android-intent gallery android-tabhost lifecycle