Android(安卓)解决Handler在运行时加载报空指针异常
16lz
2022-04-17
1.可自定义一个这样的WeakReferenceHandler
public class WeakReferenceHandler<T> extends Handler { private final WeakReference<T> mReference; public WeakReferenceHandler(T referencedObject) { mReference = new WeakReference<>(referencedObject); } public WeakReferenceHandler(Looper looper, T referencedObject) { super(looper); mReference = new WeakReference<>(referencedObject); } protected T getReferencedObject() { return mReference.get(); }}
2.在Fragment创建一个新Handler并继承WeakReferenceHandler
private RangHandler mHandler;/** * 处理异步操作 */private static class RangHandler extends WeakReferenceHandler<RankingFragment> { public RangHandler(RankingFragment referencedObject) { super(referencedObject); // TODO Auto-generated constructor stub }//编写自己的需要执行的任务 @Override public void handleMessage(Message msg) { RankFragment fragment = getReferencedObject(); if (fragment != null && fragment.getActivity() != null) { switch (msg.what) { case MSG_SHOW: fragment.refreshed(); if (fragment.mRankDataAdapter != null) { fragment.mRankDataAdapter.notifyDataSetChanged(); } break; case MSG_ERROR: if (fragment.isAdded()) Toast.makeText(fragment.getActivity(), R.string.error_response, Toast.LENGTH_SHORT).show(); fragment.refreshedFail(); break; default: if (fragment.isAdded()) Toast.makeText(fragment.getActivity(), R.string.error_response, Toast.LENGTH_SHORT).show(); break; } } }}
3.在onCreateView方法中实例化Handler
mHandler = new RangHandler(this);4.需要调用的地方时mHandler.sendEmptyMessage(MSG_SHOW);
更多相关文章
- android需要的访问权限(不断更新,希望大家多交流)
- API 25 (Android(安卓)7.1.1 API) animation.Animator
- Android(安卓)Audio
- Android——继承SimpleAdapter重写自己的getView
- Android(安卓)jni调用,实现自己的JNI_OnLoad函数
- Native+WebApp中Phonegap调用Android(安卓)Activity
- android异步的几种方式
- Android(安卓)LCD和键盘 背光亮度设置
- android 自定义文字跑马灯 支持拖拽,按住停止滚动,自定义速度