Show progress bar in warning dialog

I have a warning dialog box in the application for login authentication. When sending a request, I want to show a progress bar and want to decline if the response is successful. Please help me if anyone knows. I am using the following code:

final AlertDialog.Builder alert = new AlertDialog.Builder(this); LinearLayout login = new LinearLayout(this); TextView tvUserName = new TextView(this); TextView tvPassword = new TextView(this); TextView tvURL = new TextView(this); final EditText etUserName = new EditText(this); final EditText etPassword = new EditText(this); final EditText etURL = new EditText(this); login.setOrientation(1); // 1 is for vertical orientation tvUserName.setText(getResources().getString(R.string.username)); tvPassword.setText(getResources().getString(R.string.password)); tvURL.setText("SiteURL"); login.addView(tvURL); login.addView(etURL); login.addView(tvUserName); login.addView(etUserName); login.addView(tvPassword); etPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); login.addView(etPassword); alert.setView(login); alert.setTitle(getResources().getString(R.string.login)); alert.setCancelable(true); alert.setPositiveButton(getResources().getString(R.string.login), new DialogInterface.OnClickListener() { public void onClick(final DialogInterface dialog, int whichButton) { strhwdXml = etURL.getText().toString(); strUserName = etUserName.getText().toString(); XmlUtil.username = strUserName; strPassword = etPassword.getText().toString(); if ((strUserName.length() == 0) && (strPassword.length() == 0) && (strhwdXml.length() == 0)) { Toast.makeText( getBaseContext(), getResources().getString( R.string.userPassword), Toast.LENGTH_SHORT).show(); onStart(); } else { final SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor prefsEditor = prefs .edit(); try { StringBuffer inStreamBuf = new StringBuffer(); inStreamBuf = XmlUtil .getLoginAuthResponse(strUserName, strPassword, strhwdXml); strXmlResponse = inStreamBuf.toString(); Log.e("Response:", strXmlResponse); String parsedXML = ParseResponse(strXmlResponse); if (parsedXML .equalsIgnoreCase(getResources() .getString(R.string.success))) { } 
+8
source share
4 answers

It may be easier to use.

 ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", "Loading. Please wait...", true); 

You can learn more about progress dialogs here.

Cancel will

  dialog.dismiss(); 

This class is deprecated at API level 26. ProgressDialog is a modal dialog that prevents the user from interacting with the application. Instead of using this class, you should use a progress indicator, like a ProgressBar, which can be built into the user interface of your application. On the other hand, you can use a notification to inform the user about the progress of a task. Read more ... Click here

+29
source

If you want to show a progress bar, try the following steps, and copy and paste all the code into the appropriate part of your code, and it should work.

 //the first thing you need to to is to initialize the progressDialog Class like this final ProgressDialog progressBarDialog= new ProgressDialog(this); //set the icon, title and progress style.. progressBarDialog.setIcon(R.drawable.ic_launcher); progressBarDialog.setTitle("Showing progress..."); progressBarDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //setting the OK Button progressBarDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int whichButton){ Toast.makeText(getBaseContext(), "OK clicked!", Toast.LENGTH_SHORT).show(); } }); //set the Cancel button progressBarDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int whichButton){ Toast.makeText(getApplicationContext(), "Cancel clicked", Toast.LENGTH_SHORT).show(); } }); //initialize the dialog.. progressBarDialog.setProgress(0); //setup a thread for long running processes new Thread(new Runnable(){ public void run(){ for (int i=0; i<=15; i++){ try{ Thread.sleep(1000); progressBarDialog.incrementProgressBy((int)(5)); } catch(InterruptedException e){ e.printStackTrace(); } } //dismiss the dialog progressBarDialog.dismiss(); } }); //show the dialog progressBarDialog.show(); 

The cancel button should reject the dialog.

+4
source

Try entering the code

  private class DownloadingProgressTask extends AsyncTask<String, Void, Boolean> { private ProgressDialog dialog = new ProgressDialog(ShowDescription.this); /** progress dialog to show user that the backup is processing. */ /** application context. */ protected void onPreExecute() { this.dialog.setMessage("Please wait"); this.dialog.show(); } protected Boolean doInBackground(final String... args) { try { // write your request code here **StringBuffer inStreamBuf = new StringBuffer(); inStreamBuf = XmlUtil .getLoginAuthResponse(strUserName, strPassword, strhwdXml); strXmlResponse = inStreamBuf.toString(); Log.e("Response:", strXmlResponse); String parsedXML = ParseResponse(strXmlResponse); if (parsedXML .equalsIgnoreCase(getResources() .getString(R.string.success))) {** return true; } catch (Exception e) { Log.e("tag", "error", e); return false; } } @Override protected void onPostExecute(final Boolean success) { if (dialog.isShowing()) { dialog.dismiss(); } if (success) { Toast.makeText(ShowDescription.this, "File successfully downloaded", Toast.LENGTH_LONG) .show(); imgDownload.setVisibility(8); } else { Toast.makeText(ShowDescription.this, "Error", Toast.LENGTH_LONG) .show(); } } } 

and call this in onclick event

 new DownloadingProgressTask().execute(); 
0
source

Since the ProgressDialog class is deprecated, here is an easy way to map the ProgressBar to AlertDialog :

  1. Add fields to your activity:

     AlertDialog.Builder builder; AlertDialog progressDialog; 
  2. Add the getDialogProgressBar () method to your activity:

     public AlertDialog.Builder getDialogProgressBar() { if (builder == null) { builder = new AlertDialog.Builder(this); builder.setTitle("Loading..."); final ProgressBar progressBar = new ProgressBar(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); progressBar.setLayoutParams(lp); builder.setView(progressBar); } return builder; } 
  3. Initialize progressDialog :

     progressDialog = getDialogProgressBar().create(); 
  4. Show / hide AlertDialog whenever you want to use utility methods:

    progressDialog.show() and progressDialog.dismiss()

0
source

Source: https://habr.com/ru/post/917769/


All Articles