android学习笔记:Fragment中监听返回键

关于监听虚拟按键中的返回键:activity和fragmentActivity中只需要重写onTouchEvent或者onBackPressed方法即可。但是fragment中没有这两个方法,所以并不能通过重写来监听back键。

所以我通过回调来实现了该方法的监听。

项目地址:https://github.com/chengxp/BackKeyWithFragment

代码目录结构:

android学习笔记:Fragment中监听返回键_第1张图片
代码目录结构

首先定义一个接口类:
也可以在需要监听back键的fragment中直接定义这个接口,但为了方便所有的fragment都可以用到,我这边是直接创建了一个接口类。

IBackInterface.java

public interface IBackInterface {    void setSelectedFragment(Fragment fragment);}

然后在承接fragment的Activity中实现这个接口:
MainActivity.java

public class MainActivity extends AppCompatActivity implements IBackInterface{
    private Fragment fragment; //用于传递监听back键的fragment
    ...
    @Override
    public void setSelectedFragment(Fragment fragment) {    
        this.fragment = fragment;
    }

再到需要监听back键的fragment中
FragmentTwo.java

private IBackInterface backInterface;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    
        ...    
        backInterface = (IBackInterface)getActivity();  
        backInterface.setSelectedFragment(this);//将fragment传递到Activity中 
        return view;
    }
/**
* 用于返回是否需要实现监听
*/
public boolean onBackPressed() {
    if(判断条件) {
        return true;//监听back键,用于处理自己的点击事件
    }
    return false;//原生back效果
}

最后再返回承接fragment的Activity中处理点击事件
MainActivity.java

@Override
    public void onBackPressed() {
        if (fragment != null && ((FragmentTwo) fragment).onBackPressed()) {
            //实现具体的点击效果
        } else {
            super.onBackPressed();
        }
    }

效果图:

android学习笔记:Fragment中监听返回键_第2张图片
fragment中监听back键的效果图

你可能感兴趣的:(android学习笔记:Fragment中监听返回键)