永远不会调用我的onActivityResult方法.我正在使用android 2.2
我正在使用Tabhost,其中TabHosts包含包含单个活动的TabGroup.
我的一项个人活动运行以下意图
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!");
}
}
}
生命周期函数通常被调用乱序,间歇性地调用tabhost / tabgroup中的活动,所以我检查了库关闭后调用了哪些生命周期函数(只要我从android库中选择一个图像就会发生这种情况)
唯一被调用的是我的TabHost活动中的onResume().所以我尝试将完全相同的onActivityResult()方法放在我的TabHost类中,就像TabActivity类一样.在方法开头的同一位置使用断点.
这两个类都没有被调用.
我现在画一个空白,如果没有内置的接收方法会响应它,我如何从我的应用程序中的gallery应用程序获得结果.
因为我知道我的主要TabHost被调用了onResume(),所以我尝试添加了Intent graphics = getIntent();看看它是否会从库选择中接收数据,但它没有,所以我也看不出如何在onResume()方法中执行逻辑.
欢迎解决方案:)
解决方法:
尝试使用包含当前活动的tabgroup活动的上下文来调用startActivityForResult,然后在tabgroup活动中进行监听.
使用它来获取tabGroupActivity:
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
然后从中调用startActivityForResult:
parentActivity.startActivityForResult(...);
最后,在tabGroupActivity中放置一个onActivityResult监听器:
protected void onActivityResult(int requestCode, int resultCode,Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
}