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

 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进行通信。

你可能感兴趣的:(【填补改需求的坑】viewpager中的全屏fragment如何监听返回键)