在我的活动中,Oncreate()函数im调用一个AsyncTask。在这个PostExecute() im中,创建了一些动态库控件并调用了但我得到了Null指针异常。
我需要刷新活动,而不调用Oncreate ()B‘’coz,在Oncreate中只调用im调用异步任务。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
new testAynscTask().execute();
}
private class testAynscTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
processTogetImages();
// TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
CreateDynamicGallery();
aImageAdapterL.notifyDataSetChanged();
}
}
public void CreateDynamicGallery(){
CategoryGalleryLayout = (LinearLayout) findViewById(R.id.linearLayout1);
Gallery g = new Gallery(getApplicationContext());
GalleryLayout.addView(g,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
g.setSpacing(15);
aImageAdapterL = new ImageAdapter(getApplicationContext());
g.setAdapter(aImageAdapterL);
g[positionP].setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View v, int position, long id) {
Toast.makeText(getBaseContext(), "" + position, Toast.LENGTH_SHORT).show();
}
});
}
}提前感谢
发布于 2013-10-18 21:00:59
在我看来,您并不是真正刷新活动,而是适配器中的图像。我建议使用空适配器从createDynamicGallery调用onCreate (编写良好的适配器视图应该将其视为空适配器来处理空适配器),然后加载映像并用映像填充真正的适配器(或新适配器)。将图片库视图的适配器设置为真正的适配器应该会导致图片库刷新,一切都会好的。
作为另一项观察,您可能需要考虑使用带有加载管理器的异步任务加载器来帮助您正确地处理旋转问题。使用当前代码,如果异步任务需要很长时间才能执行,则可能会获得错误(可能是“活动被破坏”的错误)或两个异步任务试图在屏幕旋转后加载图像的争用条件。
https://stackoverflow.com/questions/14888872
复制相似问题