结果的 startActivity 不会在片段上调用

startActivity for result does not called on fragment

我正在尝试使用开始 Activity 作为结果从图库中挑选照片,但它不会调用片段

我检查了大多数解决方案,但没有一个适合我 请帮助我

 newsImg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                 intent=new Intent(Intent.ACTION_PICK);
                intent.setType("image*//*");
                getActivity().startActivityForResult(intent,GALLERY_INTENT);
            }
        });
  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

      if(requestCode==GALLERY_INTENT && resultCode== Activity.RESULT_OK){
            Uri uri=data.getData();
            StorageReference filePath=mStorage.child("Photos").child(uri.getLastPathSegment());
            filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    downloadUri=taskSnapshot.getDownloadUrl();
                    Picasso.with(getActivity().getApplicationContext()).load(downloadUri).fit().centerCrop().into(newsImg);
                    Toast.makeText(getActivity().getApplicationContext(),"success",Toast.LENGTH_SHORT).show();

                    publishBtn.setEnabled(true);
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(getActivity().getApplicationContext(),"fail",Toast.LENGTH_SHORT).show();

                }
            });

        }

尝试使用它然后找出答案,在给出我的答案之前,我建议您做一些研究或搜索简短形式的确切内容,就像您想要使用 画廊意图一样,只需使用 android 中的 图片选择器 或 android 中的图库 Intent。从片段开始,我们使用 getContext() 而不是像 MainActivity.this.

那样使用 ActivityIntent

为结果调用开始Activity 这样做:

private final int REQUEST_CODE = 1

class ImagePicker extends Fragment{
   /*here we are calling the start activity for result
   supposing you know how to use the gallery intent so just giving you 
   the answer what you want */

   Intent intent = new Intent(getContext(), YourClass.class);
   startActivityForResult(intent, REQUEST_CODE);
 }

并且在 onActivityResult() 中,您将在相同的 Fragment 中得到结果,或者在完成此操作后 Activity。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        //get your gallery image uri data here
        }
}

希望对您有所帮助,请参阅此 link 以了解更多有关如何在 Activity 中获取数据的信息。

About startAcitivityForResult in android

希望对您有所帮助!谢谢

编辑

由于您的代码对于画廊意图来说似乎没问题,但我认为您的画廊意图存在问题。也试试这个,看看它是否有效。

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, RESULT_CODE;

这里具体我用过inten.setType("image/*")还有一个东西,简单点,不要用getActivity.startActivityForResult() 简单点,startAcitivityForResult() 也可以正常工作并使用 getContext() 尽管执行了 getActivity().getApplicationContext()。尝试修改这些东西,然后告诉我它是否有效!