fragment处理物理返回键

来源:互联网 发布:linux u盘启动 编辑:程序博客网 时间:2024/04/27 20:49

转载: http://blog.csdn.net/guxiao1201/article/details/40507387

fragment监听返回键。有时候在activity中点击了物理返回键,不只是返回上一层。所以这时候需要在fragment中处理物理返回键的事件。

首先创建一个接口

public interface FragmentBackListener { void  onbackForward(); }

宿主在宿主activity中:

public class MainActivity extends Activity {private FragmentBackListener backListener;private boolean isInterception = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}public FragmentBackListener getBackListener() {return backListener;}public void setBackListener(FragmentBackListener backListener) {this.backListener = backListener;}public boolean isInterception() {return isInterception;}public void setInterception(boolean isInterception) {this.isInterception = isInterception;}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if (isInterception()) {if (backListener != null) {backListener.onbackForward();return false;}}}return super.onKeyDown(keyCode, event);}}

在fragment中

public class MFragment extends Fragment implements FragmentBackListener{@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubsuper.onAttach(activity);if(activity instanceof MainActivity){((MainActivity)activity).setBackListener(this);((MainActivity)activity).setInterception(true);}}@Overridepublic void onDetach() {super.onDetach();if(getActivity() instanceof MainActivity){((MainActivity)getActivity()).setBackListener(null);((MainActivity)getActivity()).setInterception(false);}}@Overridepublic void onbackForward() {// 处理fragment的返回事件}}


0 0
原创粉丝点击