Sorry, ich weiß, dass diese Frage wurde mehrmals gestellt und hat viele Antworten, aber keine von ihnen löste mein Problem. Ich rufe Web-Service an und zeige einen Dialog, der funktioniert. Aber ich kann den progressDialog nicht abweisen. Obwohl die gleiche Methode innerhalb des Fragments funktioniert, verwende ich dieses Mal in Activity. Bitte zeigen Sie mir, wo ich den Fehler mache.kann progress nicht abbrechenDialog in Aktivität
public void signupServiceResponse(String phNum,String password){
progressDialog = createProgressDialog(this, false);
//progressDialog.show();
final ContentServiceCall request = ServiceGenerator.createService(ContentServiceCall.class, "Empty");
final Call<UserServiceResponse> call = request.signUp(Constants.WS_VERSION,Constants.LOCAL_EN,Constants.PLATFORM, phNum,password);
call.enqueue(new Callback<UserServiceResponse>() {
@Override
public void onResponse(Call<UserServiceResponse> call, final Response<UserServiceResponse> response) {
if(response!=null && response.isSuccessful())
{
if(response.body()!=null && response.body().getResponse()!=null)
{
if(response.body().getResponse().getResponseCode()== Constants.RESPONSE_CODE_SUCCESS) {
if(response.body().getUser() != null && response.body().getUserSubscription()!= null && response.body().getUserSubscription() !=null) {
userEntity = response.body().getUser();
userProfileEntity = response.body().getUserProfile();
userSubscriptionEntity = response.body().getUserSubscription();
//insert in user table
int tableCode = 1; //table code 1 for user table
dbHelper.insertUserRegistration(userEntity, userProfileEntity, userSubscriptionEntity, tableCode);
dbHelper.close();
progressDialog.dismiss();
Intent i = new Intent(RegistrationActivity.this, ActivateAccountActivity.class);
startActivity(i);
}
} else if((response.body().getResponse().getResponseCode()== Constants.USERAlREADYEXIST_RESPONSE_CODE_SUCCESS)) {
// in case user data is cleared or app is reinstalled
boolean userCount = dbHelper.getUserCount();
if (userCount) {
Intent i = new Intent(RegistrationActivity.this, MainActivity.class);
startActivity(i);
} else if(!userCount){
// if user exist and data is cleared
userEntity = response.body().getUser();
userProfileEntity = response.body().getUserProfile();
userSubscriptionEntity = response.body().getUserSubscription();
int tableCode = 1;
dbHelper.insertUserRegistration(userEntity, userProfileEntity, userSubscriptionEntity, tableCode);
dbHelper.close();
}
} else if((response.body().getResponse().getResponseCode()== Constants.RESPONSE_CODE_PASSWORD_INCORRECT)){
Toast.makeText(RegistrationActivity.this,"Password incorrect",Toast.LENGTH_LONG).show();
btnForgetPassword.setVisibility(View.VISIBLE);
progressDialog.dismiss();
}
else {
}
}
else {
// leave it
}
}
else
{
// Display proper message
//Toast.makeText(getActivity(),getString(R.string.error_webservice_response),Toast.LENGTH_LONG).show();
}
progressDialog.dismiss();
}
@Override
public void onFailure(Call<UserServiceResponse> call, Throwable t) {
Log.e("Fail", "Failure");
Log.e("ERROR", t.getMessage());
progressDialog.dismiss();
Toast.makeText(RegistrationActivity.this,getString(R.string.error_internet_connectivity),Toast.LENGTH_LONG).show();
}
});
}
public ProgressDialog createProgressDialog(Context mContext, Boolean cancelable) {
final ProgressDialog dialog = new ProgressDialog(mContext);
try {
dialog.show();
} catch (WindowManager.BadTokenException e) {
}
dialog.setCancelable(cancelable);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(R.layout.dialog);
return dialog;
}
Dies ist normalerweise, weil 'progressDialog' nicht mehr auf die Instanz verweist, die Sie denken, wenn 'follow()' aufgerufen wird. Statt eines Klassenfeldes für 'progressDialog' sollte' final ProgressDialog progressDialog = ... 'genau dort in' signupServiceResponse() 'gemacht werden. Stellen Sie außerdem sicher, dass Sie nicht tatsächlich mit mehreren sichtbaren Instanzen enden. Das heißt, stellen Sie sicher, dass Sie "signupServiceResponse()" nicht versehentlich mehrmals aufrufen. –
nur einmal signupServiceResponse() aufrufen. und ich habe global progressDialog so deklariert. ProgressDialog progressDialog = null. Soll ich das entfernen? – Andrain
Ihre Variable 'progressDialog' bezieht sich auf den' ProgressDialog', der von der Methode 'createProgressDialog' und nicht' android.app.ProgressDialog' zurückgegeben wird. Dies ist der Grund, warum Ihre Methoden ablehnen() nicht funktionieren. –