在Fragment中没有触发OnActivityResult

时间:2014-08-31 07:19:17

标签: android-camera android-fragmentactivity android-support-library android-camera-intent onactivityresult

我从一个片段调用了ACTION IMAGE CAPTURE意图,我在同一个片段中实现了onActivityResult()但是在使用我的note2设备运行时没有触发onActivityResult。检查下面我使用的代码片段。

我不使用

时工作正常
 import android.support.v4

  • 我打开片段的活动

          public class HomeActivity extends FragmentActivity {
    
  • 我称之为Camera Intent的片段

         public class SaveCardFragment extends Fragment { 
         private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 1888;
         ...
    
  • 调用相机意图

         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
         startActivityForResult(intent,CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
         ...
    
  • 检测活动结果的功能

        @Override 
        public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        super.onActivityResult(requestCode, resultCode, data); 
        Log.d("Result", ""+requestCode);
        }
    
  • AndroidManifest中的配置

         <uses-sdk
          android:minSdkVersion="8"
          android:targetSdkVersion="18" />
         <uses-permission android:name="android.permission.CAMERA"/>
         <uses-feature android:name="android.hardware.camera"/>
         <application
         android:allowBackup="true" android:icon="@drawable/ic_launcher" 
         android:label="@string/app_name" android:theme="@style/AppTheme"
         >
         <activity android:name=".HomeActivity" android:label="@string/title_activity_home"/>
    

1 个答案:

答案 0 :(得分:1)

  

我从片段(...)

调用了ACTION IMAGE CAPTURE意图

这不是真的。请查看以下代码行:

getActivity().startActivityForResult(SaveCardFragment.this,intent,CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

需要注意的是,您在托管活动(startActivityForResult())上调用HomeActivity,而不是片段(SaveCardFragment),因此结果会传递给活动而不会传播进一步。如果您希望将结果传递给片段,请确保在片段上调用startActivityForResult()。换句话说,只需摆脱getActivity()前缀:

startActivityForResult(SaveCardFragment.this,intent,CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

请参阅:Fragment#startActivityForResult