来自 Fragment 内适配器的 startActivityForResult

Mil*_*era 2 java android android-camera android-fragments

我有一个片段,我在其中填充了一个 RecyclerView,一个帖子包含一个相机,我需要在拍照时获取它带来的信息。我不知道怎么做。

请帮忙。

这是我的代码:

后适配器.java

        public HeaderViewHolder (View itemView) {
        super (itemView);
        this.mCamera = (ImageView) itemView.findViewById(R.id.ivCamera);
        mCameraPhoto = new CameraPhoto(itemView.getContext());
        this.mCamera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    ((Activity) v.getContext()).startActivityForResult(mCameraPhoto.takePhotoIntent(), CAMERA_REQUEST_ASIST);
                }catch (Exception e){
                    Log.e("Error camera permission", e.getMessage());
                }
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

主活动.java

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    String photoPath = mCameraPhoto.getPhotoPath();
    for (Fragment fragment : getSupportFragmentManager().getFragments()) {
        fragment.onActivityResult(requestCode, resultCode, data);

        Log.d("Result in fragment",":D --> "+photoPath);
    }

}
Run Code Online (Sandbox Code Playgroud)

我的片段

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("Result in fragment",":D");
}
Run Code Online (Sandbox Code Playgroud)

Den*_*tor 6

将片段传递给 PostAdapter 的构造函数。

class PostAdapter {
   private Fragment fragment;

   public PostAdapter(Fragment fragment) {
      this.fragment = fragment;
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在onclick里面

this.mCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try{
                fragment.startActivityForResult(mCameraPhoto.takePhotoIntent(), CAMERA_REQUEST_ASIST);
            }catch (Exception e){
                Log.e("Error camera permission", e.getMessage());
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)