在fragment中调用Camera Service,如何处理回调?
Call Camera Service inside fragment, how to handle the callback?
通常我们使用如下代码调用相机:
startActivityForResult(intent, REQUEST_CAMERA);
启动相机服务。并使用 onActivityResult 获取 return 照片 uri。它在 activity 中运行良好。但是,对于片段,回调仅在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 return其他实例,谢谢
您只需要在 activity 中处理回调,然后使用来自相机应用程序的数据调用您的片段。
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 的源代码 class 以找到一种方法来获取对片段的引用,因为它的标记。
https://code.google.com/p/android/issues/attachmentText?id=40035&aid=400350000000&name=FragmentTabHost.java&token=WHVg3x7dbNNznLcPPSwWxnin_X0%3A1367343846708
通常我们使用如下代码调用相机:
startActivityForResult(intent, REQUEST_CAMERA);
启动相机服务。并使用 onActivityResult 获取 return 照片 uri。它在 activity 中运行良好。但是,对于片段,回调仅在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 return其他实例,谢谢
您只需要在 activity 中处理回调,然后使用来自相机应用程序的数据调用您的片段。
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 的源代码 class 以找到一种方法来获取对片段的引用,因为它的标记。 https://code.google.com/p/android/issues/attachmentText?id=40035&aid=400350000000&name=FragmentTabHost.java&token=WHVg3x7dbNNznLcPPSwWxnin_X0%3A1367343846708