如何解决如果从图库中选取图像后,调用 onCreate 方法并且它已经在该视图中设置图像,如何设置图像以查看?
从 onActivityResult 中选取图像后,我试图将图像设置为 CircleImageView。 但问题是,当创建该活动时,它在 onCreate 中已经有一个方法,该方法将图像设置为该视图。因此,每当我从图库中选择图像并返回到该活动时,oncreate 方法中的图像就会设置为该视图。 我该怎么做,以便在活动开始时,首先将 onCreate 方法图像设置为该视图,然后在选择图像后,将选择的图像设置为该视图。
我的代码:
public class MentorProfileActivity extends AppCompatActivity {
long fileSize;
public static final int REQUEST_IMAGE = 100;
@BindView(R.id.profile_image_mentor)
CircleImageView profileImageMentor;
@BindView(R.id.edit_image_mentor)
CircleImageView editImageMentor;
ProgressBar pbMentor;
String name,email,userId,password,contact,mentor,imageUrl,bio,category,uriString,youtubeLink,facebookLink,instagramLink,twitterLink,extension;
String fileName,path,displayName,imageName;
LoginResponse loginResponse;
String videoViewLink = "https://smakerspace.s3.ap-south-1.amazonaws.com/Video/";
Uri uri,uriSelectedImage,file1;
File myFile;
SharedPreferences sharedPreferences;
ProgressDialog progressDoalog;
boolean isImageInit = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mentor_profile);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
ButterKnife.bind(this);
pbMentor.setVisibility(View.GONE);
if (getIntent().hasExtra("Mentor")) {
mentor = getIntent().getStringExtra("Mentor");
}
if (getIntent().hasExtra("MentorPassword")) {
password = getIntent().getStringExtra("MentorPassword");
}
sharedPreferences = this.getSharedPreferences("spMentor",Context.MODE_PRIVATE);
userId = sharedPreferences.getString("userIdMentor","");
getUserDetails(userId,mentor);
}
public void getUserDetails(String userId,String password,String mentor) {
pbMentor.setVisibility(View.VISIBLE);
retrofit2.Call<LoginResponse> ourSupplierResponseCall = RestClient.getClient().
verifyLogin(userId,mentor);
ourSupplierResponseCall.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(retrofit2.Call<LoginResponse> call,Response<LoginResponse> response) {
if (response.isSuccessful()) {
pbMentor.setVisibility(View.GONE);
loginResponse = response.body();
if (loginResponse.getError().booleanValue() == false) {
imageUrl = "https://smakerspace.s3.ap-south-1.amazonaws.com/upload/" + loginResponse.getUser().getProfilePic();
Picasso.get().load(imageUrl).into(profileImageMentor);
isImageInit = true;
} else {
}
} else {
}
}
@Override
public void onFailure(Call<LoginResponse> call,Throwable t) {
pbMentor.setVisibility(View.GONE);
}
});
}
@OnClick({R.id.edit_image_mentor})
void onProfileImageClick() {
if (!isImageInit) {
Log.d(TAG,"onProfileImageClick:Image is initing,please wait
");
return;
}
Dexter.withActivity(this)
.withPermissions(Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE)
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
if (report.areAllPermissionsGranted()) {
Intent pickIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
pickIntent.setType("image/*");
startActivityForResult(pickIntent,REQUEST_IMAGE);
}
if (report.isAnyPermissionPermanentlyDenied()) {
showSettingsDialog();
}
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions,PermissionToken token) {
token.continuePermissionRequest();
}
}).check();
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (resultCode == RESULT_OK && requestCode == REQUEST_IMAGE) {
uri = data.getData();
uriString = uri.toString();
loadProfile(uriString);
}
}
private void loadProfile(String url) {
Picasso.get().load(url).into(profileImageMentor);
profileImageMentor.setColorFilter(ContextCompat.getColor(this,android.R.color.transparent));
}
private MentorProfileActivity getActivity() {
return MentorProfileActivity.this;
}
}
图像设置几秒钟,然后再次设置上一张图像。
解决方法
可以尝试在代码中添加一个布尔标志isImageInit:
boolean isImageInit = false;
public void getUserDetails(String userId,String password,String mentor) {
pbMentor.setVisibility(View.VISIBLE);
retrofit2.Call<LoginResponse> ourSupplierResponseCall = RestClient.getClient().
verifyLogin(userId,password,mentor);
ourSupplierResponseCall.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(retrofit2.Call<LoginResponse> call,Response<LoginResponse> response) {
if (response.isSuccessful()) {
pbMentor.setVisibility(View.GONE);
loginResponse = response.body();
if (loginResponse.getError().booleanValue() == false) {
imageUrl = "https://smakerspace.s3.ap-south-1.amazonaws.com/upload/" + loginResponse.getUser().getProfilePic();
Picasso.get().load(imageUrl).into(profileImageMentor);
isImageInit = true;
} else {}
} else {}
}
@Override
public void onFailure(Call<LoginResponse> call,Throwable t) {
pbMentor.setVisibility(View.GONE);
}
});}
@OnClick({R.id.edit_image_mentor})
void onProfileImageClick() {
if(!isImageInit){
Log.d(TAG,"onProfileImageClick:Image is initing,please wait ");
return;
}
//... your old code
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。