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