我使用FragmentPagerAdapter
刷卡Fragment
並使用AsyncTask
來更新gridview,但未更新UI。片段中的AsyncTask未更新UI
它不是更新的用戶界面,也沒有拋我試圖檢查流量及其運行GalleryTab片段兩次的錯誤...和無法理解的問題。
我的代碼: -
public class GalleryTab extends Fragment {
GridView gridview;
ProgressDialog mProgressDialog;
GridViewAdapter adapter;
public List<GalleryList> phonearraylist = null;
View view;
private WeakReference<RemoteDataTask> asyncTaskWeakRef;
public static Fragment newInstance(Context context) {
GalleryTab f = new GalleryTab();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.activity_gallery_tab, null);
setRetainInstance(true);
startNewAsyncTask();
//new RemoteDataTask(this).execute();
return inflater.inflate(R.layout.activity_gallery_tab, container, false);
}
// RemoteDataTask AsyncTask
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
private WeakReference<GalleryTab> fragmentWeakRef;
private RemoteDataTask (GalleryTab gallerytab) {
this.fragmentWeakRef = new WeakReference<GalleryTab>(gallerytab);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
// Create the array
phonearraylist = new ArrayList<GalleryList>();
try {
for (int i = 0; i <= 6; i++) {
GalleryList map = new GalleryList();
map.setGallery("http://oi39.tinypic.com/21oydxs.jpg");
System.out.println("PRINT!!!!-- "+ i);
phonearraylist.add(map);
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// if (this.fragmentWeakRef.get() != null) {
adapter = new GridViewAdapter(getActivity(), phonearraylist);
System.out.println("PRINT SIZE -- "+ phonearraylist.size());
gridview = (GridView)view.findViewById(R.id.gridview);
gridview.setAdapter(adapter);
// mProgressDialog.dismiss();
// }
}
}
private void startNewAsyncTask() {
RemoteDataTask asyncTask = new RemoteDataTask(this);
this.asyncTaskWeakRef = new WeakReference<RemoteDataTask >(asyncTask);
asyncTask.execute();
}
}
您所呼叫的AsyncTask兩次? 'startNewAsyncTask(); 新的RemoteDataTask(this).execute()'? – Raghunandan