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();
        }
    }
});