0

我有几个活动都将文件发送到互联网。

我想将发布过程放入一个单独的类文件中,以便为每个活动调用相同的过程。

我将调用活动的上下文传递给主 AsyncTask 方法,该方法依次调用 preExecute、doInbackground、Postexecute。

我有一个 AlertDialog,使用传递给 AsyncTask 的上下文构建,在 postexecute 方法中显示服务器返回的消息,并使用 OnClickListener 将其关闭。单击按钮时,警报对话框关闭,但底层活动屏幕未关闭。

我尝试了几种不同的 finish() 组合,包括:-

dialog.cancel();
finish();

dialog.cancel();
MyActivity ma = new MyActivity();
ma.this.finish();

但是,没有什么会关闭活动。

我做错了什么,我需要做什么才能关闭它?

到目前为止,我可以让它工作的唯一方法是在两个活动中嵌入完全相同的代码,这在我看来既低效又容易出错。

任何帮助都会非常受欢迎。

4

1 回答 1

1

我将调用活动的上下文传递给主 AsyncTask

而不是只传递 Activity 的上下文,您需要将 Activity 实例传递给扩展AsyncTask类的类,因为完成方法来自Activity类而不是来自Context.so 尝试如下:

public class Networkasynctask extends AsyncTask<...>{

Activity activity;
Context context;

public Networkasynctask(Context context,Activity activity,...){
  this.activity=activity;
  .....
}
....
}

并从 Activity 传递 Activity 实例:

Networkasynctask networktaskobj=new Networkasynctask(this);

现在Networkasynctask.this.activity.finish()用于从非 Activity 类关闭 Activity

于 2013-04-11T18:49:34.610 回答