在Android中拍照片OnActivityResult无响应

时间:2016-03-04 13:37:27

标签: android fragment android-camera-intent

ANSWER IS HERE

谢谢大家的帮助。

我有Fragment代码,允许用户拍照。拍照后,会发生其他行动。我的问题是这些其他行动不会被启动。

这是代码。我从未收到过"拍摄的照片" LogCat中的消息。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == TAKE_PHOTO_CODE) {
        if(resultCode ==  Activity.RESULT_OK) {

            Log.i("Debug", "Photo Taken");

        }

    }
}

我尝试将Activity.RESULT_OK更改为MainActivity.thisMainActivitygetActivity(),但没有用。

拍照片代码:

 centCamera.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
             count++;
            file = dir+count+".jpg";
            currentPhotoString = file;
            File newfile = new File(file);
            try {
                newfile.createNewFile();
            } catch (IOException e) {}       

            Uri outputFileUri = Uri.fromFile(newfile);

            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);


            someMethod();

           Handler handler = new Handler();
          handler.postDelayed(new Runnable(){
          @Override
                public void run(){
           sideCamera.setEnabled(true);
             sideCamera.setVisibility(View.VISIBLE);



       centCamera.setEnabled(false);
       centCamera.setVisibility(View.GONE);
         }
         }, 500);


        }
    });

2 个答案:

答案 0 :(得分:0)

  

我从未收到过LogCat中的“Photo Taken”消息。

您是否对活动的onActivityResult方法进行了任何更改?这可能是因为它最终会先调用您onActivityResult的{​​{1}}。并且由于您没有将相同的回调传递给Activity的{​​{1}},因此您未在Fragment

中收到回调

因此,请在您的活动onActivityResult

中执行以下操作
Fragment

其中onActivityResult指的是您从Activity

调用的Fragment类的实例

答案 1 :(得分:0)

尝试覆盖活动中的onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

之后,结果应该传递给包含ViewPager

实例的片段

如果您希望将结果放在ViewPager的一个片段中,那么Fragment中的ViewPager会执行此操作:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    List<Fragment> fragments = getChildFragmentManager().getFragments();
    if (fragments != null) {
        for (Fragment fragment : fragments) {
            if (fragment != null) {
                fragment.onActivityResult(requestCode, resultCode, data);
            }
        }
    }

    super.onActivityResult(requestCode, resultCode, data);
}