Android fragment 回调函数改进

由于fragment的onResume()等回调的调用时机与Activity不一样,导致用起来比较麻烦,所以我重新封装了一下回调函数,十分简单。

使用时只需要继承此基类,使用onFragmentXXX系列回调即可。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public class AbsFragment extends Fragment {
     
    /*-------------------------------------
     * 属性
     *-------------------------------------*/
    /**是否已经onResume()了*/
    private boolean isResume = false;
    /**setUserVisibleHint(boolean)传入的值*/
    private boolean isVisbleToUser = false;
 
    /*-------------------------------------
     * protected方法
     *-------------------------------------*/
    /**
     * Fragment创建时调用的函数,建议子类重写这个方法因为生命周期比较简单
     * @param savedInstanceState
     */
    protected void onFragmentCreate(Bundle savedInstanceState) {
         
    }
     
    /**
     * Fragment销毁时调用的函数,建议子类重写这个方法因为生命周期比较简单
     * @param savedInstanceState
     */
    protected void onFragmentDestroy() {
         
    }
     
    /**
     * Fragment可见时调用的函数,建议子类重写这个方法因为生命周期比较简单
     * @param savedInstanceState
     */
    protected void onFragmentResume() {
         
    }
     
    /**
     * Fragment不可见时调用的函数,建议子类重写这个方法因为生命周期比较简单
     * @param savedInstanceState
     */
    protected void onFragmentPause() {
         
    }
    /*-------------------------------------
     * public方法
     *-------------------------------------*/
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         
        onFragmentCreate(savedInstanceState);
    }
 
    @Override
    public void onDestroy() {
        onFragmentDestroy();
         
        super.onDestroy();
    }
     
    @Override
    public void onResume() {
        super.onResume();
         
        isResume = true;
        if(isVisbleToUser) {
            onFragmentResume();
        }
    }
 
    @Override
    public void onPause() {
        isResume = false;
        if(isVisbleToUser) {
            onFragmentPause();
        }
         
        super.onPause();
    }
     
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
         
        this.isVisbleToUser = isVisibleToUser;
        if(isResume) {
            if(isVisibleToUser) {
                onFragmentResume();
            } else {
                onFragmentPause();
            }
        }
    }
 
}

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。