天天看點

安卓的記事本應用開發日志(三)

如題:

響應傳回鍵。

效果

安卓的記事本應用開發日志(三)

解決:

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

,連結如下:位址

其他:

安卓的記事本應用開發日志(二) – 簡單頁面實作。

安卓的記事本應用開發日志(一) – 頁面草圖建構。

繼續閱讀