在我的程序中,我想要显示进度对话框,因为我创建了线程,但它给了我Can't create handler inside thread that has not called Looper.prepare()
我也看了之前发布的问题,但我可以处理这个问题。这是我的代码
dialog=ProgressDialog.show(Login.this, "Connecting to the Server", "Please wait");
Thread thred=new Thread(new Runnable() {
public void run() {
try {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.diskonbanget.com/bni/login/login.php");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
String str = inputStreamToString(response.getEntity().getContent()).toString();
if(str.toString().equalsIgnoreCase("false"))
{
dialog.dismiss();
AlertDialog alert = new AlertDialog.Builder(Login.this).create();
alert.setMessage("Please enter valid username & Password");
alert.setButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
}
});
alert.setIcon(R.drawable.loginlogo);
alert.show();
}
else{
Intent intent=new Intent(Login.this,MainMenu.class);
intent.putExtra("photo", str);
intent.putExtra("username", username);
txtusername.setText("");
txtPassword.setText("");
dialog.dismiss();
startActivity(intent);
}
} catch (Exception e) {
dialog.dismiss();
AlertDialog alert = new AlertDialog.Builder(Login.this).create();
alert.setMessage("Can not Connect to the server.please make sure your internet is Switch on");
alert.setButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
}
});
alert.setIcon(R.drawable.loginlogo);
alert.show();
}
}
});
thred.start();
请有人帮我解决这个问题。
答案 0 :(得分:0)
后台线程无法显示Dialog
。请让主应用程序线程执行此操作,例如使用AsyncTask
而不是原始线程并在onPostExecute()
中显示对话框。