2018年4月15日 星期日

AndroidStudio-AndroidStudio Gradle 版本升級問題

各位大大再升級 Gradle 版本超級順利
但是只要切換成不同專案時不然爆出
Gradle 'XXX' project refresh failed ...
簡單的說專案版本與連結對應版本不符
需要再調整設定

Example :
Caused by: java.lang.RuntimeException: Minimum supported Gradle version is 4.4. Current version is 4.1.

1 . 確定為以上敘述之問題















2 . 確定掛載版本(Version : 4.4)















3 . 更新專案設定






















































參考資料:Gradle version 3.3 does not support forTask() method on BuildActionExecuter

2018年1月18日 星期四

Eclipse-如何在編寫時自動帶入方法

常常在用 Eclipse  開發的各問大大
是否會因為編寫時候
沒有自動產生出可以使用的方法列表

















Intelli-sense
•Windows -> Preferences -> Java -> Editor -> Content Assist
•Auto Activation -> Auto Activation Trigger for Java
•Change "." to ".(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Eclipse-自動添加

2018年1月14日 星期日

Linux-如何在 Window 下安裝 VirtualBox 執行 Linux

在 Window 環境下要如何執行 Linux ?
整體流程是怎樣了 ?

執行步驟 :
1 . 安裝 VirtualBox


























2 . 官網下載 Linux 的 Ubuntu 版本 : 官方網站

























































3 . 執行 VirtualBox ,並且安裝程序步驟




















4 . 設定主機參數















5 . 點選確定後,執行啟動













6 . 成功畫面




















歡迎轉載,請註明出處。

2018年1月10日 星期三

Android-AndroidStudio 3.0 無法正常使用 UI 設計介面

各位大大是否在開發介面上發生以下的問題
Design editor is unavailable until a successful build !













此版本為

















上網查解法有二 :
1 . Build -> Rebuild Project
效果有限...

2 . 先去除你程式原有的錯誤重新執行程式
clean error code and rerun application.







( Example )



歡迎轉載,請註明出處。

2018年1月7日 星期日

Android-SQLite 使用 SQLiteOpenHelper (六)_查詢資料( Select )

此篇說明如何查詢對應的結果

1 . 全部結果查詢
private static final String TABLE_CONTACTS = "counter";
private static final String KEY_DATE = "count_date";
private static final String KEY_NUMBER = "count_number";
private static final String KEY_NOTE = "count_note";

/**
 * 取得所有資料
 *
 * @return
 */
public List<Map<String, Object>> getAllData() {
    
    List<Map<String, Object>> listData = new ArrayList<Map<String, Object>>();
    // 查詢條件
    String strSelect = "SELECT  * FROM " + TABLE_CONTACTS;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(strSelect, null);
    if (cursor.moveToFirst()) {
        do {
            Map<String, Object> mapData = new HashMap<String, Object>();
            mapData.put(KEY_ID, cursor.getString(0));
            mapData.put(KEY_DATE, cursor.getString(1));
            mapData.put(KEY_NUMBER, cursor.getString(2));
            mapData.put(KEY_NOTE, cursor.getString(3));
            listData.add(mapData);
        } while (cursor.moveToNext());
    }

    return listData;
}

2 . 查詢條件結果
private static final String TABLE_CONTACTS = "counter";
private static final String KEY_DATE = "count_date";
private static final String KEY_NUMBER = "count_number";
private static final String KEY_NOTE = "count_note";

/**
 * 取得當日資料
 *
 * @return
 */
public Map<String, Object> getCurrentData(@NonNull Date mDate) {

    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Map<String, Object> mapData = new HashMap<String, Object>();
    // 查詢條件
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS + " WHERE " + KEY_DATE + " = ? ";
    String[] strVal = new String[]{sdf.format(mDate)};
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, strVal);
    if (cursor.moveToFirst()) {
        do {
            mapData.put(KEY_ID, cursor.getString(0));
            mapData.put(KEY_DATE, cursor.getString(1));
            mapData.put(KEY_NUMBER, cursor.getString(2));
            mapData.put(KEY_NOTE, cursor.getString(3));
        } while (cursor.moveToNext());
    }

    return mapData;
}


查詢結果出來的容器 Cursor 是什麼?我要怎麼藉由此東西取出我要的值?
官方說明為









還是不懂怎辦?
可以把它想成是一種 Map
取出來的順序必須依照欄位的順序
不然會取不到對應的值

參考資料:時間區間格式

歡迎轉載,請註明出處。




Android-SQLite 使用 SQLiteOpenHelper (五)_刪除資料( Delete )

上一篇有提到修改資料

此篇則是說明如何刪除對應資料
使用此功能必須要非常謹慎
所以要再次確認此功能是否是您所想要的

1 . 刪除資料
private static final String TABLE_CONTACTS = "counter";
private static final String KEY_DATE = "count_date";
private static final String KEY_NUMBER = "count_number";
private static final String KEY_NOTE = "count_note";
/**
 * 刪除資料列
 */
public int deleteData(@NonNull Date mData) {

    // DELETE FROM Table where 條件....
    String deleteVal = KEY_DATE + " = ?";
    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String[] strVal = new String[]{sdf.format(mData)};

    // 如果你有多條件
    /*
    String strSQL = KEY_DATE + " = ? AND " + KEY_NOTE + " = ?";
    // 第一問號,第二問號...以此類推
    String[] strings = new String[]{sdf.format(mDate), "Apple"};
    */

    SQLiteDatabase db = this.getWritableDatabase();
    return db.delete(TABLE_CONTACTS, deleteVal, strVal);
} 

為什麼 strSQL 不用放完整字組?為什麼條件參數要提出來?
要解這些問題前就必須追程式碼了













原來內部方法已經將刪除指令寫在內部
所以我們只要編寫 Where 後的指令
那為什麼要用 String 裝條件的變數?
也是因為上圖最後幾行所提出來的
依照集合內的參數依序擺放

其實擺放參數有以下此方法 :
1 . 用集合方法( 如上方 )
2 . 只接將參數寫在條件內
private static final String TABLE_CONTACTS = "counter";
private static final String KEY_DATE = "count_date";
private static final String KEY_NUMBER = "count_number";
private static final String KEY_NOTE = "count_note";
. 
.
.
public int deleteData(@NonNull Date mDate, int number, String note) {
   
    String strSQL = KEY_DATE + " = '2018-01-05'";

    SQLiteDatabase db = this.getWritableDatabase();
    return db.delete(TABLE_CONTACTS, strSQL, null);
}

歡迎轉載,請註明出處。