我在我的Android应用程序中搜索数据并通过控制台进行调试,当我检查控制台时,我看到doInBackground
工作正常,但在它没有调用onPostExecute
之后。我不知道因为什么,有人可以帮忙吗?
protected List<Recipe> doInBackground(Void... params) {
try {
List<Recipe> recipes=RecipeService.getRecipes(context,"a");
if(recipes != null) android.util.Log.i(TAG,"encontrados");
return recipes;
} catch (java.io.IOException e) {
android.util.Log.e(TAG,e.getMessage(),e);
android.util.Log.i(TAG,"ta akiiiiii");
com.android.utils.AndroidUtils.AlertDialog(context,R.string.name_io);
}finally{
progresso.dismiss();
}
return null;
}
//Update a view
protected void OnPostExecute(List<Recipe> recipes) {
android.util.Log.i(TAG,"are here");
for (Recipe recipe : recipes) {
android.util.Log.i(TAG,"Carro: "+recipe.name);
}
}
这里的日志永远不会执行,请有一些错误吗? try
的{{1}}有效。
答案 0 :(得分:1)
其onPostExecute()
,而不是OnPostExecute()
。在o
中使用小写字母onPostExecute()
。
用以下代码替换您的代码:
@Override
protected void onPostExecute(List<Recipe> recipes) {
android.util.Log.i(TAG,"are here");
for (Recipe recipe : recipes) {
android.util.Log.i(TAG,"Carro: "+recipe.name);
}
}
如果您尝试覆盖方法,总是尝试添加@Override
注释。通过这种方式,您将知道是否正确编写了方法签名。
答案 1 :(得分:1)
您的方法是大写的,破坏了java约定。实际方法称为onPostExecute()
。因为名称不同,所以您实际上没有覆盖该方法。这就是@Override
注释如此有用的原因 - 如果您使用它,它会在这里给你一个编译错误。