【填补改需求的坑】viewpager中的全屏fragment如何监听返回键

来源:互联网 发布:胡歌车祸知乎 编辑:程序博客网 时间:2024/06/02 03:11
 Java Code 
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
因为改需求的原因,又暂时没时间代码重构,就一直把全屏的Fragment当做activity用,因为为此填了不少坑。
如何在Fragment中监听返回键呢?
思路就是Fragment从属的activity监听返回键,分发给各个Fragment模拟返回键
Activity中:
@Override
public void onBackPressed()
{
    /*如果我的问题 我的回答 问题详情 我要求助
    * 这四个fragment处于可见的状态,就该让这些fragment处理返回键
    * 调用各自的返回逻辑*/

    int index = viewPager.getCurrentItem();
    //        switch(index){
    //            case MYANSWER_FRAGMENT_INDEX:
    //                /*调用各自fragment的返回方法,有更好的方法*/
    //                break;
    //        }
    /*需要直接finish的fragment*/
    if(index == COOPERATION_FRAGMENT_INDEX || index == GROUP_FRAGMENT_INDEX)
    {
        this.finish();
    }
    else  //需要软返回的fragment
    {
        EventBus.getDefault().post(new OnBackPressedMsg());
    }

}
/*定义一个消息类,让fragment接收返回键按下的消息*/
public static class OnBackPressedMsg
{

}
Fragment中:
/*变相监听返回键*/
public void onEventMainThread(CircleActivity.OnBackPressedMsg msg)
{
    /*如果可见就返回*/
    if(getUserVisibleHint())
    {
        /*模拟返回*/
        onClick(imgBtnReturn);
    }
}
其中用到了EventBus进行通信。
0 0
原创粉丝点击