**更新:(见下文)**我已经寻找了几天,但无法得到明确的答案。有些人说这是可能的,有些人说可以实现,有些人则说不行。我对此感到非常困惑。
我想要的只是将AsyncTaskTask在外部类中显示进度条。为此,我正在像主类中所示传递上下文。但无论我尝试什么,都会出现
欢迎提供可工作的代码示例。谢谢!
顺便说一句,我正在使用Android 2.2。
主要代码:
我想要的只是将AsyncTaskTask在外部类中显示进度条。为此,我正在像主类中所示传递上下文。但无论我尝试什么,都会出现
NullPointerException
。欢迎提供可工作的代码示例。谢谢!
顺便说一句,我正在使用Android 2.2。
主要代码:
import android.app.Activity;
import android.os.Bundle;
public class AsyncDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new AsyncClass(this).execute();
}
}
AsyncClass.java
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.SystemClock;
public class AsyncClass extends AsyncTask<Void, String, Void> {
private Context context;
ProgressDialog dialog = new ProgressDialog(context);
public AsyncClass(Context cxt) {
context = cxt;
}
@Override
protected void onPreExecute() {
dialog.setTitle("Please wait");
dialog.show();
}
@Override
protected Void doInBackground(Void... unused) {
SystemClock.sleep(2000);
return (null);
}
@Override
protected void onPostExecute(Void unused) {
dialog.dismiss();
}
}
更新: 我有一个后续问题:使用上述代码,是否可能从onPostExecute方法返回一个值到主类中呢?(对于我的新手行为感到抱歉) 我尝试了以下代码:
String result = new AsyncClass(this).execute();
然后是一个返回字符串的方法。但我无法做到这一点,因为我遇到了以下问题:
Type mismatch: cannot convert from AsyncTask<String,Void,Void> to String
我该怎么解决这个问题?谢谢。