其他一切都正常,就是点击登录按钮以后,不能正常显示请稍等的对话框~~~~代码如下:
package com.phome;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class LoginActivity extends Activity implements Runnable {
Button loginButton;
EditText userName;
EditText password;
ProgressDialog dialog;
Handler handler;
boolean result=false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.login);
loginButton=(Button)findViewById(R.id.signin_button);
userName=(EditText)findViewById(R.id.username_edit);
password=(EditText)findViewById(R.id.password_edit);
//设置登录按钮的事件
loginButton.setOnClickListener(
new Button.OnClickListener()
{
public void onClick(View v) {
//TODO
Thread mThread=new Thread(LoginActivity.this);
dialog = ProgressDialog.show(LoginActivity.this, "提示", "请稍后......", true);
handler = new Handler() {
public void handleMessage(Message msg) {
}
};
mThread.start();
while(true)
{
if(!mThread.isAlive())
{
if(result)
{
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
//loginToBack();
}
else
{
Toast.makeText(LoginActivity.this, "用户信息错误", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
}
);
}
public boolean checkUser() {
String NameSpace = "http://tempuri.org/";
String MethodName = "CheckUser";
//String url = "http://192.168.6.201/WService/WebServices.asmx";
String url = "http://192.168.6.200/WService/WebServices.asmx";
String soapAction = NameSpace + MethodName;
int result = 0;
try {
//step1 指定WebService的命名空间和调用的方法名
SoapObject request = new SoapObject(NameSpace, MethodName);
//step2 设置调用方法的参数值,这里的参数名称最好和WebService一致
request.addProperty("_s_Username", userName.getText().toString());
request.addProperty("_s_Password", password.getText().toString());
//step3 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置是否调用的是dotNet下的WebService
envelope.dotNet = true;
//必须,等价于envelope.bodyOut = request;
envelope.setOutputSoapObject(request);
//step4 创建HttpTransportSE对象
HttpTransportSE ht = new HttpTransportSE(url);
//step5 调用WebService
Log.e("call", "call");
ht.call(soapAction, envelope);
Log.e("callend", "callend");
//step6 使用getResponse方法获得WebService方法的返回结果
if(envelope.getResponse()!=null){
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
result = Integer.parseInt(response.toString());
Log.e("result",String.valueOf(result));
}
} catch (Exception e) {
result=0;
}
if(result==1)
{
return true;
}
return false;
}
//跳转到后台处理界面
protected void loginToBack()
{
Intent intent = new Intent();
intent.setClass(LoginActivity.this, Test.class);
intent.putExtra("userName", userName.getText());
intent.putExtra("password", password.getText());
startActivity(intent);
}
public void quitPro()
{
Builder dialog=new AlertDialog.Builder(LoginActivity.this);
dialog.setTitle("提示");
dialog.setMessage("您确定退出客户端?");
dialog.setPositiveButton("确定",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
LoginActivity.this.finish();
}
}
);
dialog.setNegativeButton("取消",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
}
}
);
dialog.show();
} //设置退出键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getKeyCode()==KeyEvent.KEYCODE_BACK)
{
quitPro();
return true;
}
return super.onKeyDown(keyCode, event);
} public void run() {
result=checkUser();
dialog.dismiss();
}
}
package com.phome;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class LoginActivity extends Activity implements Runnable {
Button loginButton;
EditText userName;
EditText password;
ProgressDialog dialog;
Handler handler;
boolean result=false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.login);
loginButton=(Button)findViewById(R.id.signin_button);
userName=(EditText)findViewById(R.id.username_edit);
password=(EditText)findViewById(R.id.password_edit);
//设置登录按钮的事件
loginButton.setOnClickListener(
new Button.OnClickListener()
{
public void onClick(View v) {
//TODO
Thread mThread=new Thread(LoginActivity.this);
dialog = ProgressDialog.show(LoginActivity.this, "提示", "请稍后......", true);
handler = new Handler() {
public void handleMessage(Message msg) {
}
};
mThread.start();
while(true)
{
if(!mThread.isAlive())
{
if(result)
{
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
//loginToBack();
}
else
{
Toast.makeText(LoginActivity.this, "用户信息错误", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
}
);
}
public boolean checkUser() {
String NameSpace = "http://tempuri.org/";
String MethodName = "CheckUser";
//String url = "http://192.168.6.201/WService/WebServices.asmx";
String url = "http://192.168.6.200/WService/WebServices.asmx";
String soapAction = NameSpace + MethodName;
int result = 0;
try {
//step1 指定WebService的命名空间和调用的方法名
SoapObject request = new SoapObject(NameSpace, MethodName);
//step2 设置调用方法的参数值,这里的参数名称最好和WebService一致
request.addProperty("_s_Username", userName.getText().toString());
request.addProperty("_s_Password", password.getText().toString());
//step3 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置是否调用的是dotNet下的WebService
envelope.dotNet = true;
//必须,等价于envelope.bodyOut = request;
envelope.setOutputSoapObject(request);
//step4 创建HttpTransportSE对象
HttpTransportSE ht = new HttpTransportSE(url);
//step5 调用WebService
Log.e("call", "call");
ht.call(soapAction, envelope);
Log.e("callend", "callend");
//step6 使用getResponse方法获得WebService方法的返回结果
if(envelope.getResponse()!=null){
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
result = Integer.parseInt(response.toString());
Log.e("result",String.valueOf(result));
}
} catch (Exception e) {
result=0;
}
if(result==1)
{
return true;
}
return false;
}
//跳转到后台处理界面
protected void loginToBack()
{
Intent intent = new Intent();
intent.setClass(LoginActivity.this, Test.class);
intent.putExtra("userName", userName.getText());
intent.putExtra("password", password.getText());
startActivity(intent);
}
public void quitPro()
{
Builder dialog=new AlertDialog.Builder(LoginActivity.this);
dialog.setTitle("提示");
dialog.setMessage("您确定退出客户端?");
dialog.setPositiveButton("确定",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
LoginActivity.this.finish();
}
}
);
dialog.setNegativeButton("取消",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
}
}
);
dialog.show();
} //设置退出键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getKeyCode()==KeyEvent.KEYCODE_BACK)
{
quitPro();
return true;
}
return super.onKeyDown(keyCode, event);
} public void run() {
result=checkUser();
dialog.dismiss();
}
}
这一句写在handler= new Handler(){...}外面
run方法是启动进程thread.start执行的方法
1、在试图里创建状态变量 public static final int LOGIC_WAITE = 0;这个是作为登陆框显示
public static final int LOGIC_ING = 1;这个是作为显示“正在登陆,请稍后”
public static final int logicState = LOGIC_WAITE;默认为显示登陆框
private logicWaite logicWaite; 创建一个登陆框类,单独编写
2、然后在draw()函数里用switch(gameState){
case LOGIC_WAITE:
draw logicWaite();
break;
}
3、在按钮函数里面也添加相应的gameWaite.ontouchEvent();
不知道能不能看明白
public void handleMessage(Message msg) {
}
};放到外面去。mThread.start();
再dailog.show();
然后在run方法里发送消息判断登入是否成功和取消dailog.dismiss();