ProgressDialog onClick не работает - PullRequest
0 голосов
/ 30 марта 2012

ProgressDialog onClick не работает .. вот мой код .. В основном я хочу показать диалоговое окно загрузки, когда пользователь отправляет форму входа и ждет ответа

public class LoginLayout extends MenuActivity {
ProgressDialog progress;
EditText un,pw;
TextView error;
Button ok;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);
    un=(EditText)findViewById(R.id.et_un);
    pw=(EditText)findViewById(R.id.et_pw);
    ok=(Button)findViewById(R.id.btn_login);
    error=(TextView)findViewById(R.id.tv_error);

    ok.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {
                progress = ProgressDialog.show(LoginLayout.this, "Login","please...wait",true);

            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("username", un.getText().toString()));
            postParameters.add(new BasicNameValuePair("password", pw.getText().toString()));

            String response = null;
            try {

                response = CustomHttpClient.executeHttpPost("http://www.mysite.com/api/login.php", postParameters);
                String res=response.toString();
                res= res.replaceAll("\\s+","");
                progress.dismiss();

        if(res.equals("1"))
                    error.setText("Correct Username or Password");
                else
                    error.setText("Sorry!! Incorrect Username or Password");
            } catch (Exception e) {
                un.setText(e.toString());
            }

        }
    });
}

}

1 Ответ

1 голос
/ 30 марта 2012

Вы должны использовать Hanlders или AsyncTask. Есть множество вопросов по этому поводу здесь. Попробуйте следовать приведенному ниже фрагменту,

Сделайте это в вашем onCreate ()

       Handler handler;
handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        if (msg.what == 0) {
     Pdialog.dismiss();     

 if(res.equals("1"))
                error.setText("Correct Username or Password");
            else
                error.setText("Sorry!! Incorrect Username or Password");
     }
   };

А теперь используйте поток для загрузки файлов на сервер. Изменить этот кусок кода,

public class Activity001 extends Activity 
{

ok.setOnClickListener(new View.OnClickListener() {
     public void onClick(View view) 
     { 
    ProgressDialog progressDialog = ProgressDialog.show(Activity001.this, "", "wait ", true, false);
Thread ProgressThread = new Thread() {
                @Override
                public void run() {
                    try {

ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("username", un.getText().toString()));
            postParameters.add(new BasicNameValuePair("password", pw.getText().toString()));

            String response = null;
            try {

                response =         CustomHttpClient.executeHttpPost("http://www.mysite.com/api/login.php", postParameters);
                String res=response.toString();
                res= res.replaceAll("\\s+","");


                        } catch(InterruptedException e) {
                            // do nothing
                        } finally {

                                 handler.sendEmptyMessage(0);
                        }
                    }
                };

                    ProgressThread.start();


           } };

    }

Если не использовать AsyncTask,

Вот несколько ссылок,

http://www.vogella.de/articles/AndroidPerformance/article.html

http://labs.makemachine.net/2010/05/android-asynctask-example/

http://developer.android.com/reference/android/os/AsyncTask.html

...