2014-05-01 39 views
1

我有一個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()); 
       } 
     } 


    } 

編輯的立彬: 我怎麼稱呼:

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();  
          } 
        } 


      } 

     }); 

回答

2

ActivityonCreate()Fragment

創建的 ProgressDialog實例
private ProgressDialog mProgressDialog; 

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

當您單擊該按鈕呼叫,

mProgressDialog.show(); 

而且,當你得到的迴應從HTTP Request回來,打電話

mProgressDialog.hide(); 

而且在活動onDestroy,關閉對話框

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

如果你在AsyncTask中執行網絡請求。您可以在onPreExecute() and hide in onPostExecute()`

+0

顯示進度非常感謝。 –

+0

但我需要進度吧。當我點擊按鈕,進度對話框不顯示,只是應用程序凍結,直到它做的工作,其工作只有當活動正在改變 –

+0

你可以發佈你的代碼如何調用顯示和隱藏? – Libin