Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 进程对话框未显示异步任务_Java_Android_Android Asynctask_Progressdialog - Fatal编程技术网

Java 进程对话框未显示异步任务

Java 进程对话框未显示异步任务,java,android,android-asynctask,progressdialog,Java,Android,Android Asynctask,Progressdialog,我已经被这个问题困扰了几天,我想显示progresdialog,但它没有显示。当我登录时,我希望asyncHttpTask显示并关闭processdialog,但这不会发生 我的活动登录中的clicklogin方法 @OnClick(R.id.login) public void clickLogin() { if ((!etUsername.getText().toString().equals("")) && (!etPassword.getText().toStr

我已经被这个问题困扰了几天,我想显示progresdialog,但它没有显示。当我登录时,我希望asyncHttpTask显示并关闭processdialog,但这不会发生

我的活动登录中的clicklogin方法

@OnClick(R.id.login)
public void clickLogin() {

    if ((!etUsername.getText().toString().equals("")) && (!etPassword.getText().toString().equals(""))) {
        boolean succesfullLogin=new UserFunctions().
              loginUser(etUsername.getText().toString(),
              etPassword.getText().toString(),Login.this);
        if(succesfullLogin){
            Intent intent = new Intent(getApplicationContext(), Home.class);
            startActivity(intent);
            finish();
        }else{

        }


    } else if ((!etPassword.getText().toString().equals(""))) {
        Toast.makeText(getApplicationContext(),
                "Password field empty", Toast.LENGTH_SHORT).show();
    } else if ((!etUsername.getText().toString().equals(""))) {
        Toast.makeText(getApplicationContext(),
                "Username field empty", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(getApplicationContext(),
                "Username and Password field are empty", Toast.LENGTH_SHORT).show();
    }
}
类userFunctions中的loginuser调用异步任务

  public Boolean loginUser(String username, String password, Login context) {
    ProgressDialog pDialog = new ProgressDialog(context);

    pDialog.setTitle("Contacting Servers");
    pDialog.setMessage("Logging in ...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(true);

    Map<String, String> map = new HashMap<>();
    map.put("url", loginURL);
    map.put("username", username);
    map.put("password", password);

    AsyncHttpTask loginTask = new AsyncHttpTask(pDialog);

    try {
        HttpObject response = loginTask.execute(map).get();


        if (response.getResponseCode() == 200) {
            JSONObject json = response.getJsonObject();


            DatabaseHandler db = new DatabaseHandler(context);

            Log.i("json user:", json.getString("username"));

            /**
             * Clear all previous data in SQlite database.
             **/
            UserFunctions logout = new UserFunctions();
            logout.logoutUser(context);
            //db.addUser(json_user.getString(KEY_FIRSTNAME), json_user.getString(KEY_LASTNAME), json_user.getString(KEY_EMAIL),
              //      json_user.getString(KEY_USERNAME), json_user.getInt(KEY_AGE), json_user.getInt(KEY_NRCHILDREN),
                //    json_user.getString(KEY_CIVILSTATUS), json_user.getString(KEY_SEX), json_user.getInt(KEY_VEGETARIAN) == 0 ? false : true);


            Log.i("succes", "succesfull log in");
            return true;


        } else {
            Toast.makeText(context,
                    "Wrong username or password", Toast.LENGTH_SHORT).show();

            Log.i("errormessage", "Incorrect username/password");
        }


    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }


    return false;
}
public Boolean登录用户(字符串用户名、字符串密码、登录上下文){
ProgressDialog pDialog=新建ProgressDialog(上下文);
pDialog.setTitle(“联系服务器”);
设置消息(“登录…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
Map Map=newhashmap();
map.put(“url”,loginURL);
map.put(“用户名”,用户名);
map.put(“密码”,password);
AsyncHttpTask loginTask=新的AsyncHttpTask(pDialog);
试一试{
HttpObject response=loginTask.execute(map.get();
if(response.getResponseCode()==200){
JSONObject json=response.getJsonObject();
DatabaseHandler db=新的DatabaseHandler(上下文);
Log.i(“json用户:”,json.getString(“用户名”);
/**
*清除SQlite数据库中以前的所有数据。
**/
UserFunctions注销=新建UserFunctions();
注销。注销用户(上下文);
//db.addUser(json_user.getString(KEY_FIRSTNAME)、json_user.getString(KEY_LASTNAME)、json_user.getString(KEY_EMAIL),
//json_user.getString(KEY_USERNAME)、json_user.getInt(KEY_AGE)、json_user.getInt(KEY_NRCHILDREN),
//json_user.getString(KEY_CIVILSTATUS)、json_user.getString(KEY_SEX)、json_user.getInt(KEY_素食)==0?false:true);
Log.i(“成功”、“成功登录”);
返回true;
}否则{
Toast.makeText(上下文,
“错误的用户名或密码”,Toast.LENGTH_SHORT.show();
Log.i(“错误消息”,“不正确的用户名/密码”);
}
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(执行例外){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}
返回false;
}
最后是AsyncHttpTask,它扩展了Asynctask

public class AsyncHttpTask extends AsyncTask<Map<String, String>, Integer, HttpObject> {


private ProgressDialog pDialog;
private HttpObject httpObject;
private HttpURLConnection urlConnection = null;


public AsyncHttpTask(ProgressDialog pDialog) {
    this.pDialog = pDialog;
    httpObject = new HttpObject();
}


@Override
protected void onPreExecute() {
    //super.onPreExecute();
    pDialog.setMessage("Doing something, please wait.");
    pDialog.show();
}


@Override
protected HttpObject doInBackground(Map<String, String>... params) {
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }



    try {
        buildConnection(params[0]);

        httpObject.setResponseCode(urlConnection.getResponseCode());
        if (httpObject.getResponseCode() == 200) {

            buildJson(new BufferedInputStream(urlConnection.getInputStream()));
        }


    }  catch (IOException e) {
        Log.i("HttpTask:",e.getMessage());
        e.printStackTrace();
    }
    return httpObject;
}




private void buildConnection(Map<String, String> urlMap) throws IOException {


    URL url = new URL(urlMap.get("url"));
    urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setRequestMethod("GET");

    for (String key : urlMap.keySet()) {
        if (key != "url") {
            urlConnection.setRequestProperty(key, urlMap.get(key));
        }

    }

    Log.i("HttpTask", urlConnection.toString());
    Log.i("HttpTask", url.toString());


}

private void buildJson(BufferedInputStream is) {
    String json = "";
    JSONObject jObj = null;
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        Log.i("json in string: ", json);
        json = sb.toString();
        Log.e("JSON", json);
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        Log.i("json in string: ", json);
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    httpObject.setJsonObject(jObj);
}


@Override
protected void onPostExecute(HttpObject httpObject) {
    super.onPostExecute(httpObject);
    pDialog.dismiss();
}
}
公共类AsyncHttpTask扩展了AsyncTask{
私人对话;
私有HttpObject HttpObject;
私有HttpURLConnection-urlConnection=null;
公共异步HttpTask(ProgressDialog pDialog){
this.pDialog=pDialog;
httpObject=新的httpObject();
}
@凌驾
受保护的void onPreExecute(){
//super.onPreExecute();
setMessage(“正在做某事,请稍候”);
pDialog.show();
}
@凌驾
受保护的HttpObject doInBackground(映射…参数){
试一试{
睡眠(5000);
}捕捉(中断异常e){
e、 printStackTrace();
}
试一试{
buildConnection(参数[0]);
httpObject.setResponseCode(urlConnection.getResponseCode());
如果(httpObject.getResponseCode()==200){
buildJson(新的BufferedInputStream(urlConnection.getInputStream());
}
}捕获(IOE异常){
Log.i(“HttpTask:,e.getMessage());
e、 printStackTrace();
}
返回httpObject;
}
私有void buildConnection(映射urlMap)引发IOException{
URL=新的URL(urlMap.get(“URL”);
urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod(“GET”);
for(字符串键:urlMap.keySet()){
如果(键!=“url”){
setRequestProperty(key,urlMap.get(key));
}
}
Log.i(“HttpTask”,urlConnection.toString());
Log.i(“HttpTask”,url.toString());
}
私有void buildJson(BufferedInputStream为){
字符串json=“”;
JSONObject jObj=null;
试一试{
BufferedReader reader=新的BufferedReader(新的InputStreamReader(
is,“iso-8859-1”),8);
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
i(“字符串中的json:”,json);
json=sb.toString();
Log.e(“JSON”,JSON);
}捕获(例外e){
Log.e(“缓冲区错误”,“错误转换结果”+e.toString());
}
//尝试将字符串解析为JSON对象
试一试{
i(“字符串中的json:”,json);
jObj=新的JSONObject(json);
}捕获(JSONException e){
Log.e(“JSON解析器”,“错误解析数据”+e.toString());
}
setJsonObject(jObj);
}
@凌驾
受保护的void onPostExecute(HttpObject HttpObject){
super.onPostExecute(httpObject);
pDialog.disclose();
}
}

谢谢你的帮助:)

问题是我不理解这项任务

这就是我做错的地方:

HttpObject response = loginTask.execute(map).get()

HttpObject response=loginTask.execute(map.get()