我试图从我的公共类中获取响应saveData扩展了AsyncTask。
为此,我添加了一个public interface OnTaskCompleted()
。但是for循环没有被执行,它直接从for行返回到返回而onPostExecute()
永远不会被执行。如果我删除了界面循环它正常工作。
我的活动:
public class almostFinish extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
}
private void InvoiceSave(){
SaveMyData savedata = new SaveMyData(new OnTaskCompleted() {
@Override
public void onTaskCompleted(boolean isSuccess) {
if(isSuccess){
//do something
}
else {
showMyAlert("Error Saving Invoice!");
}
}
});
List<String> myList = new ArrayList<>();
...
savedata.execute(myList);
}
我的界面。
public interface OnTaskCompleted {
void onTaskCompleted(boolean isSuccess);
}
我的AsyncTask类
public class SaveMyData extends AsyncTask<List<String>, Void, Void> {
private OnTaskCompleted listener;
boolean myflag = false;
public SaveMyData (OnTaskCompleted listener){
this.listener=listener;
}
@Override
public void onPreExecute() {
// TODO Auto-generated method stub
}
@Override
protected Void doInBackground(List<String>... params) {
for (int i = 1; i == 5; i++) {
}
return null;
}
@Override
public void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
listener.onTaskCompleted(myflag);
}
}
感谢您的帮助。
答案 0 :(得分:3)
您为循环设置的条件是错误的。不应该是for (int i = 1; i <= 5; i++)
??
答案 1 :(得分:0)
正如@Mr Neo所说,构造函数和类名应该相同,例如:
public class saveData extends AsyncTask<List<String>, Void, Void> {
private OnTaskCompleted listener;
boolean myflag = false;
public saveData(OnTaskCompleted listener){
this.listener=listener;
}
其他方面,类名应该以大写字母开头,例如&#34; SaveData&#34;,非静态成员声明名称应该以非大写字母开头,例如&#34; saveData& #34;,例如:
SaveData saveData = new SaveData(someParams);
saveData.execute(otherSomeParams);
良好的编码方式使一个好的开发人员aha。