**更新:(见下文)**我已经环顾了几天,找不到一个直接的答案。有人说可以,有人说可以完成,有人说不能。我对此越来越疯狂。
我想要的只是让 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();
}
}
异步类.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
我能做些什么来解决这个问题?谢谢。