Fragment监听返回键

方法一

@Override
    public void onResume() {
        super.onResume();
        getFocus();
    }

    private void getFocus() {
        if (getView() != null) {
            getView().setFocusable(true);
            getView().setFocusableInTouchMode(true);
            getView().requestFocus();
            getView().setOnKeyListener(new View.OnKeyListener() {

                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
                        // 监听到返回按钮点击事件
                        saveData();
                        return true;// 未处理
                    }
                    return false;
                }
            });
        }
    }
    
    
    /**
     * 保存数据
     */
    private void saveData() {
        if (save) {
            // 已保存
            getActivity().onBackPressed();
        } else {
            // 未保存, 提示保存
            activity.showDailog("保存数据", "数据还未保存, 是否离开此页面?", "离开不保存", "保存数据", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    // cancel
                    getActivity().onBackPressed();
                }
            }, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    update();
                }
            });
        }
    }

方法二: 重写activity的onBackPressed()方法

public class PartitionActivity extends BaseActivity {

    private PartitionFragment fragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_plan);

        fragment = new PartitionFragment();
    }



    @Override
    public void onBackPressed() {
        if (null != fragment) {
            // true: 返回, false: 不返回
            boolean b = fragment.onBackPressed();
            if (b) {
                super.onBackPressed();
            }
        } else {
            super.onBackPressed();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/APTX8899/article/details/88648987
今日推荐