Atu*_*yal 13 android android-context android-asynctask android-activity
我的通话活动:
public class Hello extends Activity {
public void onCreate(Bundle savedInstanceState) {
MyTask mt = new MyTask(this);
mt.execute();
}
Run Code Online (Sandbox Code Playgroud)
现在在MyTask(一个外部类):
public class MyTask extends AsyncTask<Void, Void, Void> {
private Context mContext;
public MyTask(Context context) {
mContext = context;
}
//doinbackground, etc
protected void onPostExecute() {
mContext.finish();
}
Run Code Online (Sandbox Code Playgroud)
如果我删除mContext.finish()上面的其他东西正在按预期工作.
但是如果我正在调用mContext.finish(),我会收到一个错误:( The method finish() is undefined for the type Context当我编写mContext时,Eclipse没有显示finish().所以这表明我错误地使用了finish().)
完成任务Hello后,我需要做什么才能完成调用活动MyTask
Squ*_*onk 20
((Activity)mContext).finish();
Run Code Online (Sandbox Code Playgroud)
将a转换Context为a Activity并调用其finish()方法的正确方法.不知道为什么你要完成一个Activity从AsyncTask虽然
Nec*_*net 18
您可以尝试做什么而不是调用context.finish(),为什么不执行这样的回调接口:
public interface TaskCallback{
void done();
}
Run Code Online (Sandbox Code Playgroud)
然后将其实现到您的Activity中
public Hello extends Activity implements TaskCallback{
.....BUNCH OF ACTIVITY CODE.....
public void onCreate(Bundle savedInstanceState) {
MyTask mt = new MyTask(this);
mt.execute();
}
public void done() {
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
而不是将Context作为参数,而是使用TaskCallback
public class MyTask extends AsyncTask<Void, Void, Void> {
private TaskCallback mCallback;
public MyTask(TaskCallback callback) {
mCallback = callback;
}
//doinbackground, etc
protected void onPostExecute() {
mCallback.done();
}
Run Code Online (Sandbox Code Playgroud)
你去了,它为你提供了更多的灵活性来定制每个实现.
Sha*_*dow -4
你能试一下吗
this.finish()
Run Code Online (Sandbox Code Playgroud)
似乎是因为使用 mContext 调用它,所以它说未定义。
| 归档时间: |
|
| 查看次数: |
27330 次 |
| 最近记录: |