如題:
響應傳回鍵。
效果
解決:
在
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
,連結如下:位址
其他:
安卓的記事本應用開發日志(二) – 簡單頁面實作。
安卓的記事本應用開發日志(一) – 頁面草圖建構。