在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