通常,为了调用相机,我们使用如下代码:
startActivityForResult(intent, REQUEST_CAMERA);
启动相机服务。并使用onActivityResult获取返回照片uri。它在活动中运作良好。但是,对于片段,回调只是在Main Activity而不是片段中触发,如何设置回调?
请注意,片段位于tabhost内并且在传输之后,我不能简单地tabhostmanager().findviewbytag()
非常感谢
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("test1", "result2");
super.onActivityResult(requestCode, resultCode, data);
}
更新
The tabost
tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
tabHost.addTab(tabHost.newTabSpec("home").setIndicator("Home"),HomeFragment.class, null);
我使用片段事务,所以findviewbyid / tag返回其他实例,谢谢
答案 0 :(得分:1)
您只需处理活动中的回调,然后使用来自相机应用程序的数据调用您的片段。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CAMERA) {
if (resultCode == RESULT_OK) {
((YourFragment)getFragmentManager().findFragmentById(R.id.layout_id)).yourFragmentMethodToHandleDataFromCamera(data);
}
}
}
查看FragmentTabHost类的源代码,以便找到一种方法来获取对其片段的引用。 https://code.google.com/p/android/issues/attachmentText?id=40035&aid=400350000000&name=FragmentTabHost.java&token=WHVg3x7dbNNznLcPPSwWxnin_X0%3A1367343846708