Android fragment监听返回键
2017-04-10 12:38
513 查看
fragment需要监听返回键时分两种情况,一种是有其他控件获取了焦点,另一种是没有其他控件获得焦点。
先看第二种情况,代码如下:
MyFragment.Java
[java] view
plain copy
print?
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.history, container,
false);
// 设置下面三个状态才能监听返回事件
lv.setFocusable(true);
lv.requestFocus();
lv.setFocusableInTouchMode(true);
lv.setOnKeyListener(backListener);
return rootView;
}
private View.OnKeyListener backListener = new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
// ToDo
return true;
}
return false;
}
};
}
第一种情况则需要在Activity中监听onKeyDown事件,贴出关键代码
在Activity中
[java] view
plain copy
print?
private Fragment fg; // fg记录当前的Fragment
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (fg instanceof MyFragment) {
((MyFragment) fg).onKeyDown(keyCode, event);
}
}
在MyFragment中
[java] view
plain copy
print?
// 返回键按下时会被调用
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == event.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
// TODO
return true;
}
return false;
}
这样就能通过Activity监听按键,然后调用Fragment定义的方法。
先看第二种情况,代码如下:
MyFragment.Java
[java] view
plain copy
print?
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.history, container,
false);
// 设置下面三个状态才能监听返回事件
lv.setFocusable(true);
lv.requestFocus();
lv.setFocusableInTouchMode(true);
lv.setOnKeyListener(backListener);
return rootView;
}
private View.OnKeyListener backListener = new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
// ToDo
return true;
}
return false;
}
};
}
第一种情况则需要在Activity中监听onKeyDown事件,贴出关键代码
在Activity中
[java] view
plain copy
print?
private Fragment fg; // fg记录当前的Fragment
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (fg instanceof MyFragment) {
((MyFragment) fg).onKeyDown(keyCode, event);
}
}
在MyFragment中
[java] view
plain copy
print?
// 返回键按下时会被调用
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == event.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
// TODO
return true;
}
return false;
}
这样就能通过Activity监听按键,然后调用Fragment定义的方法。
相关文章推荐
- android fragment 监听返回键
- Android小技巧 - Fragment监听返回键
- android 在fragment中如何监听返回键,home键
- android fragment轻松监听返回键/Fragment中的popupwindow响应返回键隐藏
- android Fragment 无法用返回键监听
- android 在fragment中如何监听返回键,home键
- Android Fragment中监听返回键
- Android开发-Fragment返回键监听-AndroidStudio
- Android:Fragment返回栈的监听和弹栈 随记
- Android中Fragment监听返回按钮及返回栈BackStack的一些处理
- Android必知必会-Fragment监听返回键事件
- Android 优雅的让Fragment监听返回键
- Android开发:监听当前View的左右滑动事件,并返回给当前的activity或者fragment
- 【android进阶】Fragment内放置WebView,监听返回键,并返回之前打开的网页
- Android 监听Fragment返回键的方式之一
- Android中让Fragment监听返回键
- Android之小技巧 - Fragment监听返回键
- Android开发实现Fragment监听返回键事件功能的方法
- Android 在Fragment中监听返回键的做法
- Android开发-Fragment返回键监听-AndroidStudio