Android 进程对话框错误
我的代码:Android 进程对话框错误,android,Android,我的代码: package com.android.skiptvad; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList
package com.android.skiptvad;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.skiptvad.*;
public class Login extends Activity {
private static final int DIALOG_LOADING = 0;
/** Called when the activity is first created. */
TextView tvuser;
String sessionid;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
tvuser = (TextView) findViewById(R.id.tvuser);
TextView tvpw = (TextView) findViewById(R.id.tvpw);
final EditText etuser = (EditText) findViewById(R.id.etuser);
final EditText etpw = (EditText) findViewById(R.id.etpw);
Button btlogin = (Button)findViewById(R.id.btlogin);
btlogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (etuser.getText() != null && etpw.getText()!= null)
{
showDialog(DIALOG_LOADING);
try
{
//download(etuser.getText().toString(), md5(etpw.getText().toString()));
HttpClient client = new DefaultHttpClient();
String postURL = "http://surfkid.redio.de/login";
HttpPost post = new HttpPost(postURL);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", etuser.getText().toString()));
params.add(new BasicNameValuePair("password", md5(etpw.getText().toString())));
UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,HTTP.UTF_8);
post.setEntity(ent);
HttpResponse responsePOST = client.execute(post);
HttpEntity resEntity = responsePOST.getEntity();
final JSONObject jObject = new JSONObject(EntityUtils.toString(resEntity));
JSONObject menuObject = jObject.getJSONObject("responseData");
if (jObject.getInt("responseStatus")== 200 && jObject.get("responseDetails")!= null)
{
sessionid = menuObject.getString("session_id");
}
else
{
if (jObject.getInt("responseStatus")== 500)
{
throw new Exception("Server Error");
}
else if (jObject.getInt("responseStatus")== 400)
{
throw new Exception("Wrong User/Password");
}
else
{
throw new Exception();
}
}
}
catch (Exception e)
{
Log.d("error", "error");
}
finally{
dismissDialog(DIALOG_LOADING);
}
}
}
});
}
public void download (final String user, final String pw)
{
}
private String md5(String in) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
digest.reset();
digest.update(in.getBytes());
byte[] a = digest.digest();
int len = a.length;
StringBuilder sb = new StringBuilder(len << 1);
for (int i = 0; i < len; i++) {
sb.append(Character.forDigit((a[i] & 0xf0) >> 4, 16));
sb.append(Character.forDigit(a[i] & 0x0f, 16));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) { e.printStackTrace(); }
return null;
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case DIALOG_LOADING:
dialog = new ProgressDialog(this);
((ProgressDialog) dialog).setMessage("Loading, please wait...");
break;
}
return dialog;
}
}
package com.android.skiptvad;
导入java.io.BufferedReader;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.security.MessageDigest;
导入java.security.NoSuchAlgorithmException;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入org.apache.http.protocol.http;
导入org.apache.http.util.EntityUtils;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.app.Dialog;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.Window;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.android.skiptvad.*;
公共类登录扩展活动{
私有静态最终整型对话框_加载=0;
/**在首次创建活动时调用*/
文本视图用户;
字符串sessionid;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
tvuser=(TextView)findViewById(R.id.tvuser);
TextView tvpw=(TextView)findViewById(R.id.tvpw);
最终EditText etuser=(EditText)findViewById(R.id.etuser);
最终EditText etpw=(EditText)findViewById(R.id.etpw);
按钮btlogin=(按钮)findViewById(R.id.btlogin);
btlogin.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
if(etuser.getText()!=null&&etpw.getText()!=null)
{
showDialog(对话框加载);
尝试
{
//下载(etuser.getText().toString(),md5(etpw.getText().toString());
HttpClient=new DefaultHttpClient();
字符串姿势=”http://surfkid.redio.de/login";
HttpPost=新的HttpPost(postrl);
List params=new ArrayList();
add(新的BasicNameValuePair(“用户名”,etuser.getText().toString());
add(新的BasicNameValuePair(“密码”),md5(etpw.getText().toString());
UrlEncodedFormEntity ent=新的UrlEncodedFormEntity(params,HTTP.UTF_8);
邮政实体(ent);
HttpResponse responsePOST=client.execute(post);
HttpEntity当前状态=responsePOST.getEntity();
final JSONObject jObject=新的JSONObject(EntityUtils.toString(resEntity));
JSONObject menuObject=jObject.getJSONObject(“responseData”);
if(jObject.getInt(“responseStatus”)==200&&jObject.get(“responseDetails”)!=null)
{
sessionid=menuObject.getString(“会话id”);
}
其他的
{
if(jObject.getInt(“responseStatus”)==500)
{
抛出新异常(“服务器错误”);
}
else if(jObject.getInt(“responseStatus”)==400)
{
抛出新异常(“错误的用户/密码”);
}
其他的
{
抛出新异常();
}
}
}
捕获(例外e)
{
Log.d(“错误”、“错误”);
}
最后{
dismissDialog(对话框\加载);
}
}
}
});
}
公共无效下载(最终字符串用户,最终字符串pw)
{
}
私有字符串md5(字符串输入){
信息摘要;
试一试{
digest=MessageDigest.getInstance(“MD5”);
reset();
update(在.getBytes()中);
字节[]a=摘要。摘要();
int len=a.长度;
StringBuilder sb=新StringBuilder(长度>4,16));
sb.append(字符forDigit(a[i]&0x0f,16));
}
使某人返回字符串();
}catch(nosuchalgorithme异常){e.printStackTrace();}
返回null;
}
@凌驾
受保护的对话框onCreateDialog(int id){
Dialog=null;
开关(id){
案例对话框\u加载:
dialog=新建ProgressDialog(此);
((ProgressDialog)对话框).setMessage(“正在加载,请稍候…”);
打破
}
返回对话框;
}
}
没有对话框出现 您正试图在UI线程之外调用一个与UI相关的API函数-在本例中,可能是
pd.disclesh()
。任何与UI相关的操作都需要在主线程上运行-一种简单的方法是通过活动来完成。runOnUiThread()
您试图在UI线程之外调用与UI相关的API函数-在这种情况下,可能是pd.dislose()
。任何与UI有关的东西都需要在主线程上运行-一种简单的方法是通过活动来完成。runOnUiThread()
我同意@EboMike
private static final int DIALOG_LOADING = 0;
...
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch (id) {
case DIALOG_LOADING:
dialog = new ProgressDialog(this);
((ProgressDialog) dialog).setMessage("Loading, please wait...");
break;
}
return dialog;
}
btlogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (etuser.getText() != null && etpw.getText()!= null)
{
showDialog(DIALOG_LOADING);
Thread t = new Thread() {
public void run(){
try{
download(etuser.getText().toString(), md5(etpw.getText().toString()));
} catch(Exception e) {
Log.e("TAG","Exception caught in thread:"+e.toString());
e.printStackTrace();
} finally {
try{
dismissDialog(DIALOG_LOADING);
} catch (IllegalArgumentException e) {
Log.w("TAG","Dialog does not exist");
}
}
//finish();
}
};
t.start();
}
}
});