Google에서 내 의견을 업데이트하기 위해 SwipeRefreshLayout
을 사용합니다. 그리고 나는 문제가있다. 내가 직장에 있다면 onRefresh()
은 다른 fragment
으로 바뀌고 두 번째 프로그램은 충돌합니다.SwipeRefreshLayout을 사용할 때 응용 프로그램이 다운 됨
다음과 같이 문제가 발생합니다. MyAsincTask
을 실행하는 onRefresh()
메서드를 실행합니다. 그런 다음 새 fragment
을 켭니다. 그리고 내가 새로 왔을 때 fragment MyAsincTask
이 종료되고 데이터 어댑터를 설정하려고합니다. 그러나 나는 이미 다른 곳에있다. 응용 프로그램이 충돌합니다. 나는 ProgressDialog
- progressDialog.setCancelable(false);
을 사용하여 그것을 해결하는 방법을 안다. MyAsincTask
작업을 마칠 때까지 새로운 조각으로 이동할 수 없습니다. 그러나 그것을 구현하는 방법 SwipeRefreshLayout
?
MY CODE :
swipeLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_employe_list);
swipeLayout.setColorSchemeColors(Color.RED, Color.GREEN, Color.BLUE, Color.CYAN);
swipeLayout.setOnRefreshListener(this);
@Override
public void onRefresh() {
if (InternetResiver.isOnline(getActivity())) {
setData();
} else {
AlertDialog alert = InternetResiver.getAlertDialog(getActivity());
alert.show();
}
}
MY ERROR :
12-18 03:46:17.655 456-456/com.managment.pavel.managmentgradle E/libEGL﹕ call to OpenGL ES API with no current context (logged once per thread)
12-18 03:46:32.085 456-456/com.managment.pavel.managmentgradle E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.nostra13.universalimageloader.core.ImageLoaderConfiguration$Builder.<init>(ImageLoaderConfiguration.java:196)
at com.nostra13.universalimageloader.core.ImageLoaderConfiguration.createDefault(ImageLoaderConfiguration.java:127)
at com.managment.pavel.managmentgradle.fragments.adapters.EmployeeListAdapter.<init>(EmployeeListAdapter.java:52)
at com.managment.pavel.managmentgradle.fragments.EmployeessList$1.onPostExecute(EmployeessList.java:109)
at com.managment.pavel.managmentgradle.fragments.EmployeessList$1.onPostExecute(EmployeessList.java:69)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
편집 :
public class EmployeeListAdapter extends SectionedBaseAdapter {
private ArrayList<String> sections;
private ArrayList<List<EmployeesListBean>> employees;
private ImageLoader imageLoader = ImageLoader.getInstance();
private DisplayImageOptions options;
private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
private Context context;
public EmployeeListAdapter(ArrayList<EmployeesListBean> employeesListBeans, Context context) {
this.context = context;
Map<String, List<EmployeesListBean>> map = new HashMap<>();
for (EmployeesListBean employeesListBean : employeesListBeans) {
if (!map.containsKey(employeesListBean.getDepart_name()))
map.put(employeesListBean.getDepart_name(), new ArrayList<EmployeesListBean>());
map.get(employeesListBean.getDepart_name()).add(employeesListBean);
}
sections = new ArrayList<>(map.keySet());
employees = new ArrayList<>(map.values());
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.build();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
}
어디서 imageloader를 초기화할까요? – jenuine