好像xutils框架目前还不支持fragment的反射,看了下,比较好改,主要修改ViewFinder。

修改一:

ViewUtils.java

public static void inject(Fragment fragment) {    injectObject(fragment, new ViewFinder(fragment));}

修改二:

ViewFinder.java

import android.app.Activity;import android.content.Context;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceGroup;import android.support.v4.app.Fragment;import android.view.View;public class ViewFinder {    private View view;    private Activity activity;    private Fragment fragment;    private PreferenceGroup preferenceGroup;    private PreferenceActivity preferenceActivity;    public ViewFinder(View view) {        this.view = view;    }    public ViewFinder(Activity activity) {        this.activity = activity;    }        public ViewFinder(Fragment fragment) {        this.fragment = fragment;    }    public ViewFinder(PreferenceGroup preferenceGroup) {        this.preferenceGroup = preferenceGroup;    }    public ViewFinder(PreferenceActivity preferenceActivity) {        this.preferenceActivity = preferenceActivity;        this.activity = preferenceActivity;    }    public View findViewById(int id) { // 修改这里//        View v = activity == null ? view.findViewById(id) : activity.findViewById(id);    View v = null;        if(activity != null) {        v = activity.findViewById(id);        } else if(this.fragment != null) {        v = this.fragment.getView().findViewById(id);        } else {        v = view.findViewById(id);        }        return v;    }    public View findViewByInfo(ViewInjectInfo info) {        return findViewById((Integer) info.value, info.parentId);    }    public View findViewById(int id, int pid) {        View pView = null;        if (pid > 0) {            pView = this.findViewById(pid);        }        View view = null;        if (pView != null) {            view = pView.findViewById(id);        } else {            view = this.findViewById(id);        }        return view;    }    @SuppressWarnings("deprecation")    public Preference findPreference(CharSequence key) {        return preferenceGroup == null ? preferenceActivity.findPreference(key) : preferenceGroup.findPreference(key);    }    public Context getContext() {        if (view != null) return view.getContext();        if (activity != null) return activity;        if (preferenceActivity != null) return preferenceActivity;        if (fragment != null) return fragment.getActivity();        return null;    }}

如何使用:

@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,        Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment_home, null);        return v;}public void onViewCreated(View view, Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        ViewUtils.inject(this);        AppLog.log("homefragment.onCreateView" + this.title_icon);        initView();}


更多相关文章

  1. Android(安卓): 自己写个HTTP框架
  2. android安卓手机分屏多窗口实现方法
  3. Android(安卓)使用 HTTPS
  4. Android四大图片缓存框架之-Fresco之initialize(二)
  5. Binder框架的一些简单总结(关于自定义服务中的Binder)
  6. Android(安卓)驱动之旅 第五章: 在Android(安卓)系统的应用程序框
  7. android 如何绕过签名校验
  8. [日更-2019.5.21] Android(安卓)系统的分区和文件系统(一)--Androi
  9. Android(安卓)App整体架构设计的思考

随机推荐

  1. Android4.4 Activity启动流程
  2. Windows下git下载android source
  3. android ndk 使用第三方静态库
  4. 【android】checkedTextView形成自定义Li
  5. Android(安卓)API 中文 (55) —— ListAdap
  6. 疯狂android讲义学习总结---TextView
  7. 加速 Android(安卓)开发的五大开源网站
  8. Android界面开发推荐颜色
  9. Android(安卓)EventBus的使用
  10. Android(安卓)SQLite Shell