我有几个活动都将文件发送到互联网。
我想将发布过程放入单独的类文件中,以便为每个活动调用相同的过程。
我将调用活动的上下文传递给主AsyncTask方法,该方法又调用preExecute,doInbackground,Postexecute。
我有一个AlertDialog,使用传递给AsyncTask的上下文构建,在postexecute方法中显示服务器返回的消息,并使用OnClickListener来关闭它。单击该按钮时,alertdialog将关闭,但基础活动屏幕不会。
我尝试了几种不同的finish()组合,包括: -
dialog.cancel();
finish();
和
dialog.cancel();
MyActivity ma = new MyActivity();
ma.this.finish();
但是,没有什么可以关闭活动。
我做错了什么,我需要做些什么才能让它关闭?
到目前为止,我能让它工作的唯一方法是在两个活动中嵌入完全相同的代码,这在我看来既低效又容易出错。
非常欢迎任何帮助。
答案 0 :(得分:1)
我将调用活动的上下文传递给主AsyncTask
而不是仅传递Activity的上下文,您需要将Activity实例传递给扩展AsyncTask
类的类,因为finish方法来自Activity
类而不是来自Context
。所以尝试它为:
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类