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

时间:2017-09-22 21:41:06

标签: java android fragment photo

我尝试使用start Activity for results从图库中选择照片,但它没有调用片段

我检查了大多数解决方案,但没有人为我工作 请帮帮我

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

                }
            });

        }

1 个答案:

答案 0 :(得分:0)

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

为调用结果的startActivity,请执行以下操作:

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()中,您可以在完成此操作后在同一片段或活动中获得结果。

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

希望它有所帮助,请参阅此链接以了解有关如何在同一活动中获取数据的更多信息。

About startAcitivityForResult in android

希望有所帮助!感谢

<强> EDITS

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

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()。尝试修改这些事情并告诉我它是否有效!