在片段内调用Camera Service,如何处理回调?

时间:2015-02-16 23:24:46

标签: android android-fragments android-camera android-camera-intent

通常,为了调用相机,我们使用如下代码:

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返回其他实例,谢谢

1 个答案:

答案 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