常用参考基类写法之Fragment
2017-06-13 15:28
183 查看
接口:
实现基类:
public interface BaseFragmentInter { void showToast(String msg); //显示或者隐藏加载dialog void showProgressBar(); void hideProgressBar(); /** * 数据加载失败后显示的重加载按钮 * @param listener 监听器 */ void showReLoadView( BaseActivity.OnReloadListener listener); //显示或者隐藏加载进度dialog void showProgressDialog(String title,String message); void hideProgressDialog(); /** * 更换fragment * @param target 目标fragment */ void translateFragment(Fragment target); }
实现基类:
//采用延迟加载技术,可选是否实现延迟加载 public abstract class BaseFragment extends Fragment implements BaseFragmentInter { protected AppCompatActivity mParentActivity; protected String TAG = getClass().getSimpleName(); ProgressBar mProgressBar; ProgressDialog dialog; //进度窗口,会使当前界面不可点击 View view; //获取布局id和初始化 protected abstract int getLayoutId(); protected abstract void initView(View view, Bundle savedInstanceState); @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(getLayoutId(), container, false); this.view = view; this.mParentActivity = (AppCompatActivity) getActivity(); //只处理findview,数据绑定由lazyload完成 initView(view, savedInstanceState); LogUtils.e(TAG,"启动"); return view; } @Override public void onAttach(Context context) { mParentActivity = (AppCompatActivity) context; super.onAttach(context); } //更换fragment public void translateFragment(Fragment target){ FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); transaction.add(getId(),target,target.getClass().getSimpleName()); transaction.hide(this); transaction.show(target); transaction.addToBackStack(this.getClass().getSimpleName()); transaction.commit(); } public void showProgressBar() { mProgressBar = mProgressBar == null ? ((BaseActivity)mParentActivity).createProgressBar(mParentActivity,null,0) : mProgressBar; mProgressBar.setVisibility(View.VISIBLE); } public void hideProgressBar() { if (mProgressBar == null) return; mProgressBar.setVisibility(View.GONE); } public void showProgressDialog(String title,String message) { if (dialog == null) { dialog = new ProgressDialog(mParentActivity); dialog.setTitle(title); dialog.setMessage(message); dialog.setCancelable(false); } dialog.show(); } public void hideProgressDialog() { if (dialog != null) dialog.dismiss(); } public void showToast(String msg) { Toast.makeText(mParentActivity,msg,Toast.LENGTH_SHORT).show(); } public void showReLoadView(BaseActivity.OnReloadListener listener) { ((BaseActivity) mParentActivity).showReLoadView(listener); } }
相关文章推荐
- 常用参考基类写法之Activity
- Fragment专辑(四):Fragment的常用写法
- 基类Activity、Fragment、Dialog以及LogUtils、CursorUtils的写法(方便开发)
- 控件之美_常用业务组件写法
- 常用数据库JDBC连接写法
- 控件之美_常用业务组件写法
- 常用数据库JDBC直连写法
- c#.net常用的小函数参考
- 常用数据库JDBC连接写法
- 控件之美_常用业务组件写法
- 脑子不够用只能到这里查了 常用JavaScript 参考教程
- 常用数据库JDBC连接写法
- 常用数据库JDBC连接写法
- ubuntu常用软件,供有兴趣的朋友参考
- linu常用命令参考
- 控件之美_常用业务组件写法
- MySQL中文参考手册--8.MySQL教程--8.3 常用查询的例子
- 常用数据库JDBC连接写法
- 常用数据库JDBC连接写法- -
- 常用备份批处理文件写法。