android - 函数运行时的进度条

标签 android progress-bar

我有一个 SignUp 函数,在单击按钮时调用。在onClickListener函数中,是这样调用的:

SignUp(Uname.getText().toString(), Pword.getText().toString(),
        Umail.getText().toString());                     

当函数运行时,我需要显示一个进度条。我该怎么做?

这是 SignUp() 函数的代码:

public void  SignUp (String Username, String Password, String Email) {
    Integer Userch = CheckUName (Username);
    Integer UserMl = CheckUMail (Email);

    if (Userch == 3)
    {
        Toast.makeText(getActivity(), "این نام کاربری قبلا ثبت شده است",
                Toast.LENGTH_LONG).show();      
    }
    else if (UserMl == 3)
       {
            Toast.makeText(getActivity(), "این پست الکترونیکی قبلا ثبت شده است", Toast.LENGTH_LONG).show();     
       }
       else if ((UserMl == 4) && (Userch == 4))
       {

                String Pass = null;
                InputStream is = null;
                String result = "";
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("UUName", Username));
                nameValuePairs.add(new BasicNameValuePair("UPWord", Password));
                nameValuePairs.add(new BasicNameValuePair("UMail", Email));

                try{

                        HttpClient httpclient = new DefaultHttpClient();
                        HttpPost httppost = new HttpPost(SignupAddress);
                        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                        HttpResponse response = httpclient.execute(httppost);
                        HttpEntity entity = response.getEntity();
                        is = entity.getContent();
                        Toast.makeText(getActivity(), "ثبت نام انجام شد", Toast.LENGTH_LONG).show();        

                }catch(Exception e){

                    Log.e("log_tag", "Error in http connection "+e.toString());
                } 
       }


    }   

为 libin 编辑: 我怎么称呼:

 public void onClick(View v)
            {

                mProgressDialog.show();

                StrictMode.setThreadPolicy(policy); 

                String Result = login(Username.getText().toString());

                if (Username.getText().toString().equals(""))
                {

                    Toast.makeText(getActivity(), "نام کاربری را وارد کنید", Toast.LENGTH_SHORT).show();
                    mProgressDialog.hide();

                }
                else if  (Password.getText().toString().equals(""))
                {

                    Toast.makeText(getActivity(), "کلمه عبور را وارد کنید", Toast.LENGTH_SHORT).show();     
                    mProgressDialog.hide();

                }
                else
                {

                        if (Result.equals(Password.getText().toString()))
                         {

                            Intent i = new Intent(getActivity(), HomePage.class);
                             i.putExtra("new_variable_name",Username.getText().toString());
                             startActivity(i);

                         }
                         else if (Result == "Wrong Username or Password")
                         {
                            mProgressDialog.hide();

                              Toast.makeText(getActivity(), "نام کاربری یا کلمه عبور اشتباه است", Toast.LENGTH_SHORT).show();       
                         }
                          else if (Result == "Error Connection")
                         {
                            mProgressDialog.hide();

                              Toast.makeText(getActivity(), "مشکلی در برقراری ارتباط وجود دارد", Toast.LENGTH_SHORT).show();        
                         }
                          else if (Result == "Convert Error")
                         {
                            mProgressDialog.hide();

                              Toast.makeText(getActivity(), "مشکلی بوجود آمده است", Toast.LENGTH_SHORT).show();     
                         }
                          else 
                         {
                            mProgressDialog.hide();

                              Toast.makeText(getActivity(), "نام کاربری یا کلمه عبور اشتباه است", Toast.LENGTH_SHORT).show();       
                          }
                    }


            }

        });

最佳答案

ActivityFragmentonCreate() 中创建一个 ProgressDialog 实例

  private ProgressDialog mProgressDialog;

  mProgressDialog = new ProgressDialog(getActivity());
  mProgressDialog.setMessage("Signing In...");

当你点击按钮调用时,

  mProgressDialog.show();

并且,当您从 HTTP 请求 获得响应时,调用

 mProgressDialog.hide();

然后在 Activity onDestroy 中关闭对话框

@Override
protected void onDestroy(){
    if (mProgressDialog != null) {
        mProgressDialog.dismiss();
        mProgressDialog = null;
    }
    super.onDestroy();
}

如果您在 AsyncTask 中执行网络请求。您可以在 onPreExecute() 中显示进度并在 onPostExecute()`

中隐藏

关于android - 函数运行时的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23401038/

相关文章:

objective-c - 跟踪方法 iOS 的进度?

laravel - 如何通过 Storage Facade(在 Laravel 5 中)获取下载文件的进度条?

android - 在 Android Oreo 及更高版本上根据 FCM 通知唤醒我的应用

Android滚动使整个屏幕变蓝

android - Parse 和 Xmpp 同时登录与 facebook 集成

Android - 如何使用自定义 xml 可绘制对象作为背景在进度条中的运行进度上放置圆角

java - 处理程序和调度程序之间的区别

java - startForeground 的错误通知

flutter - 如何在 flutter 中实现超时按钮

javascript - 如何在jQuery函数执行时显示加载进度条?