如题:
响应返回键。
效果
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNiZpdmL5AjM1ATOyQTM2ATOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)
解决:
在
Activity
中重写
onKeyDown
方法,当用户按下返回按键,在该方法中返回
true
的时候,程序退出;在该方法中返回
false
的时候,程序不退出。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK ){
boolean flag = checkboxListener.pressBackWhenShowCheckBox();
if(flag) return false;
else return super.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
至于
checkboxListener
,是自定义的一个接口,用于监听是否当前的
ListView
中的
CheckBox
是否处于可见状态。该类中的该接口的定义和初始化接口如下:
private static CheckboxShowAndPressBack checkboxListener;
public static void setCheckboxShowAndPressBack(CheckboxShowAndPressBack checkboxShowAndPressBack){
checkboxListener = checkboxShowAndPressBack;
}
该接口定义如下:
public interface CheckboxShowAndPressBack {
// 自定义一个接口,用于判断ListView中是否设置显现CheckBox
boolean pressBackWhenShowCheckBox();
}
然后,在实现
ListView
和
Adapter
的类中,实现
CheckboxShowAndPressBack
接口,实现方法如下:
@Override
public boolean pressBackWhenShowCheckBox() {
// 检查一次,当checkbox显示,就返回true,那么在press back时候,就不退出程序;否则,退出程序
boolean flag = false;
for (int j = 0; j < lists.size(); j++) {
if(lists.get(j).isShowCheckbox()) {
flag = true;
lists.get(j).setShowCheckbox(false); // 设置lists中的所有的isShowChexkbox为false。
}
}
listView.setAdapter(new NoteItemAdapter(root.getContext(), R.layout.note_list_item_layout, lists));
return flag; // 返回标志
}
完整代码,已上传
CSDN
,链接如下:地址
其他:
安卓的记事本应用开发日志(二) – 简单页面实现。
安卓的记事本应用开发日志(一) – 页面草图构建。