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 - Fatal编程技术网

Java 从异步任务返回值

Java 从异步任务返回值,java,android,Java,Android,好吧,我已经试着让它工作了一段时间了。我希望能够让我的用户登录,而不让UI挂起,直到服务器响应。当doinbackground完成时,我希望它将一个int值或一个布尔值传递给postexecute,然后我的其余代码将执行。由于某些原因,我在传递值时遇到问题 有人能帮我吗 private class login extends AsyncTask<Integer, Void, Void>{ ProgressDialog dialog = ProgressDialog.show(

好吧,我已经试着让它工作了一段时间了。我希望能够让我的用户登录,而不让UI挂起,直到服务器响应。当doinbackground完成时,我希望它将一个int值或一个布尔值传递给postexecute,然后我的其余代码将执行。由于某些原因,我在传递值时遇到问题

有人能帮我吗

private class login extends AsyncTask<Integer, Void, Void>{
    ProgressDialog dialog = ProgressDialog.show(MainActivity.this, "", "Loading, Please wait...", true);
    String user = "";
    @Override
    protected int doInBackground(Integer... params) {
        // TODO Auto-generated method stub
        Log.i("thread", "Doing Something...");
        int val = 0;
        if(db.userLogin(userTxt.getText().toString(), passTxt.getText().toString(), getApplicationContext()) == "No User Found, please try again!"){
            val = 0;
        }
        return val;
    }

    protected void onPreExecute(){
        //dialog.dismiss();
        Log.i("thread", "Started...");
        dialog.show();
    }
    protected void onPostExecute(int result){
        Log.i("thread", "Done...");
        dialog.dismiss();
        if(result == 0){
            toast.setText("No User Found, please try again!");
            toast.show();
        }else{
        Intent myIntent = new Intent(ctx, userInfo.class);
        myIntent.putExtra("user", user);
        startActivityForResult(myIntent, 0);
        }
    }

}

如果希望登录类在PostExecuteSult方法中接受int或boolean,则必须在AsyncTask的泛型类型中指定要传入的值的类型

因此,如果您希望传入一个int,您需要像这样定义您的类:private-class-login-extends-AsyncTask 布尔值如下所示:私有类登录扩展异步任务


请注意,这些是对象,整数和布尔值,而不是原语,整数和布尔值。从doInBackground methodInteger…返回int或boolean应该没有问题,因为自动装箱应该负责转换。

如果希望登录类在PostExecuterResult方法中接受int或boolean,则必须在AsyncTask的泛型类型中指定要传入的值的类型

因此,如果您希望传入一个int,您需要像这样定义您的类:private-class-login-extends-AsyncTask 布尔值如下所示:私有类登录扩展异步任务

请注意,这些是对象,整数和布尔值,而不是原语,整数和布尔值。从doInBackground methodInteger…(doInBackground methodInteger…)返回int或boolean应该没有问题,因为自动装箱应该负责转换。

使用AsyncTask时,您提供了3种类型。 第一个用于将参数传递给后台线程, 第二个用于在发布进度时传递信息,第三个用于将信息从后台线程返回到onPostExecute

您当前仅使用第一种类型

尝试:

有关更多信息,请参阅AsyncTask的泛型类型一节。

使用AsyncTask时,请提供3种类型。 第一个用于将参数传递给后台线程, 第二个用于在发布进度时传递信息,第三个用于将信息从后台线程返回到onPostExecute

您当前仅使用第一种类型

尝试:


有关更多信息,请参阅AsyncTask的泛型类型部分。

请解释传递值时遇到的问题。请解释传递值时遇到的问题。感谢您的快速响应。我很难理解。谢谢你的快速回复。我很难理解这一点。
private class login extends AsyncTask<Integer, Void, Integer>{
protected void onPostExecute(Integer result){