读书人

想实现一个简单的登录该如何解决

发布时间: 2012-06-13 12:30:18 作者: rapoo

想实现一个简单的登录,
登录,可是不知道线程间关系,一直报错,因为链接服务器代码也写到UI线程里了,

想问的是,怎么样另外开一个线程实现android登录呢?

Java code
package wm.test;import java.util.ArrayList;import java.util.List;import org.apache.http.message.BasicNameValuePair;import wm.test.util.HttpPostUtil;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** * 登录页面 *  * @author 梁皓 *  */public class TestActivity extends Activity {    private static final String TAG = "TestActivity";    private final int CODE = 1;    private EditText username;    private EditText pwd;    HttpPostUtil hpu = new HttpPostUtil();    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d(TAG, "open TestActivity");        setContentView(R.layout.main);        /*         * TextView registerLink = (TextView) findViewById(R.id.register_link);         * registerLink.setMovementMethod(LinkMovementMethod.getInstance());         */        username = (EditText) findViewById(R.id.username_edit);        pwd = (EditText) findViewById(R.id.password_edit);        Button button = (Button) findViewById(R.id.signin_button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View arg0) {                new Thread() {                    @Override                    public void run() {                        if (dologin()) {                            Intent intent = new Intent();                            // Bundle bundle = new Bundle();                            // bundle.putString("USERNAME",                            // username.getText().toString());                            // intent.putExtras(bundle);                            intent.setClass(TestActivity.this,                                    firstActivity.class);                            startActivityForResult(intent, CODE);                            finish();                        }                    }                }.start();            }        });        Button btn = (Button) findViewById(R.id.test_num);        btn.setOnClickListener(new Button.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(TestActivity.this, "临时帐号!建议您注册成为网蜜会员。", 2000)                        .show();                Intent intent = new Intent();                intent.setClass(TestActivity.this, firstActivity.class);                startActivityForResult(intent, 11);                finish();            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);    }    protected void dialog() {        AlertDialog.Builder builder = new Builder(TestActivity.this);        builder.setMessage("确定要退出吗?");        builder.setTitle("提示");        builder.setPositiveButton("确认",                new android.content.DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        dialog.dismiss();                        TestActivity.this.finish();                    }                });        builder.setNegativeButton("取消",                new android.content.DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        dialog.dismiss();                    }                });        builder.create().show();    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {            dialog();            return false;        }        return false;    }    public boolean dologin() {        Log.d(TAG, "open dologin");        String u = username.getText().toString();        String p = pwd.getText().toString();        String url = "http://www.test.com/api/user/login.htm";        if (u != null && p != null) {            List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();            list.add(new BasicNameValuePair("un", u));            list.add(new BasicNameValuePair("upwd", p));            hpu.getHtml(url, list);            return true;        }        return false;    }} 



急急急急急急急急急!!!!!!谢谢哈

[解决办法]
只改你的Button事件如下:
Java code
         button.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View arg0) {                    new Thread() {                        @Override                        public void run() {                            if (dologin()) {                                handler.sendEmptyMessage(0);                            }                        }                    }.start();                }            });
[解决办法]
anr问题

读书人网 >Android

热点推荐