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