这是我的程序的基本结构
活动A (TabHost) ->表1 (ActivityGroup) -> MainTab1Activity1
一切都很好,如果我使用Tab 1调用MediaStore。ACTION_IMAGE_CAPTURE,但是,如果我想要一个结果,我尝试(表1)。starttintentforresult(而不是startChildActivity),它试图回到Activity A,然后崩溃,因为它试图重新分配当前正在使用的资源。
我的问题是如何获得Tab 1获得结果(我已经有一个通过Tab 1到MainTabACtivity1的方法,所以如果我能在那里得到结果,我是金色的。任何帮助都将是非常感激的:)
活动A代码:
intent = new Intent().setClass(this, Tab1Group.class);
intent.putExtra(main.USERNAME_RESULT, getIntent().getStringExtra(main.USERNAME_RESULT));
spec = tabHost.newTabSpec("tab1").setIndicator("Tab1Group",
res.getDrawable(R.drawable.ic_tab_animals)).setContent(intent);
tabHost.addTab(spec);`
Tab1Group *Activity Group"
Intent faIntent = new Intent(this,MainTab1Activity1.class);
startChildActivity("MainTab1Activity1",faIntent);
MainTab1Activity1
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra("output", "EXTRA_OUTPUT");
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyy_MMM_dd_hh_mm_ss_aaa");
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(
new File(FindAnimal.fileOutput+"/"+"Random"+sdf.format(c.getTime())+
"_"+currentImageValue+".jpg")));
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
Tab1GroupparentActivity = (Tab1Group)getParent();
parentActivity.startChildActivity("TakePic",intent);
//parentActivity.startIntentForResult(intent,CAMERA_PICTURE);
我们的目标是从相机得到照片结果,目前这还没有发生。如果我尝试最后注释掉的部分,它试图重新初始化活动A代码。
所以我最终做的是使用标准活动,我使用startActivity
并摆脱了组。然后我用@Override OnWindowFocusChange
来控制窗口是否回到焦点。然后我使用一个临时的静态数据保存器。
这是我的控制器:
public class CameraResultController extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
// Calendar c = Calendar.getInstance();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyyy_MMM_dd_hh_mm_ss_aaa");
// intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(FindAnimal.fileOutput+"/AnimalFound_"+sdf.format(c.getTime())+"_"+getIntent().getStringExtra(FindAnimal.NumAnimalsSubmit)+".jpg")));
//intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, main.CAMERA_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("CAMERA RESULT", "Got Result");
if(requestCode==main.CAMERA_PICTURE) {
if(resultCode == Activity.RESULT_OK) {
Uri uriImage = data.getData();
Bundle extra = data.getExtras();
CameraPictureData.currentCameraURI = uriImage;
}else
CameraPictureData.currentCameraURI = null;
}
super.onActivityResult(requestCode, resultCode, data);
finish();
}
}
public class CameraPictureData {
public static Uri currentCameraURI = null;
}
然后在OnWindowFocus中访问CameraPictureData