Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自适配器内部片段的startActivityForResult_Java_Android_Android Fragments_Android Camera - Fatal编程技术网

Java 来自适配器内部片段的startActivityForResult

Java 来自适配器内部片段的startActivityForResult,java,android,android-fragments,android-camera,Java,Android,Android Fragments,Android Camera,我有一个片段,我在里面填了一个回收视图,一个帖子里有一个摄像头,我需要在拍照时记录下它带来的信息。我不知道怎么做 请帮忙 这是mi代码: PostAdapter.java public HeaderViewHolder (View itemView) { super (itemView); this.mCamera = (ImageView) itemView.findViewById(R.id.ivCamera); mCamera

我有一个片段,我在里面填了一个回收视图,一个帖子里有一个摄像头,我需要在拍照时记录下它带来的信息。我不知道怎么做

请帮忙

这是mi代码:

PostAdapter.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());
                }
            }
        });
    }
    @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);
    }

}
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("Result in fragment",":D");
}
MainActivity.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());
                }
            }
        });
    }
    @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);
    }

}
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("Result in fragment",":D");
}
MyFragment.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());
                }
            }
        });
    }
    @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);
    }

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

使用getFragmentById()或getFragmentByTag()方法之一获取对片段的引用

将片段传递到PostAdapter的构造函数中

class PostAdapter {
   private Fragment fragment;

   public PostAdapter(Fragment fragment) {
      this.fragment = fragment;
   }
}
然后在里面点击

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());
            }
        }
    });

您可以通过以下方式获得您拍摄的照片的信息

在你的片段中

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode == RESULT_OK){
            if(requestCode == CAMERA_REQUEST_ASIST ){
                String photoPath = mCameraPhoto.getPhotoPath();
                try {
                    // Update data in your Custom RecyclerView Adapter 
                    // and call notifyDatasetChanged

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
        }//end if resultCode
    }

更多信息

片段id放在哪里?当您创建一个片段时,您可以这样做===>事务。替换(R.id.content,fragmetTAg);commit();然后,您可以使用getFragmentByTag()获取片段的实例。您还需要从活动中删除
onActivityResult
覆盖。
FragmentActivity
类(或
AppCompatActivity
如果使用v7)已为您处理此问题。我试图将片段传递给适配器,但显示错误。!:(,“final Fragment homeGcFragment_=new Fragment();”--“mrecycergcpost.setAdapter(new PostHeaderAdapter(getActivity().getApplicationContext(),data,homeGcFragment_));”在Fragment类中,您是否调用了PostAdapter=new PostAdapter(this);mrecycergcpost.setAdapter(new PostHeaderAdapter(getActivity().getApplicationContext(),data,this));以下错误“Fragment HomeGcFragment_u{56503bd}未附加到活动”您好!此代码在“Bundle extras=data.getExtras”中引发了一个异常,一个错误,对象为nullShow此方法体,mCameraPhoto.takePhotoIntent()请。是一个库,而不是有体!是否使用此库?是的,完全正确。PhotoUtil!