Category: Android

ADT Bundle無法自動提示程式碼(ADT Bundle Content Assist not working )

之前灌standard eclipse和ADT Bundle都有遇過類似的問題, 有時候是Alt + / 沒有作用或輸入「.」符號的時候不會有作用, 少了輔助提示真的會很不習慣,有時候突然碰到這個問題也要花不少時間解決, 趁現在還有點印象趕快做一下紀錄

在開發android app的過程中, 最常編輯的檔案就是.java和.xml, 所以分兩個部份來說:

.java

Window->Preferences->Java->Editor->Content Assist

Enable auto activation

2014-08-02_230335

這裡的Auto activation triggers for java是觸發auto activation(語句提示)所需輸入的字元, 預設只有「.」而已, 當然也可以擴充, 像Visual Studio一樣, 輸入每個字都會自動過濾並提示, 想要做到上述所說的可以輸入:.abcdefghijklmnopqrstuvwxyz(,

complete content assist

如果還是不行, 請檢查Advanced中的Java Proposals有沒有勾選

Java Proposals

.xml

1.Associating xml editors with Android Common XML Editor(default)

File Associations

2.Enable Automatically make suggestions

 

XML Auto Activation

3.Setting alt + / keyboard shortcut

這個方法剛好解決我這次碰到的問題

預設的 alt+/ 快捷鍵 是 Word Completion 而不是 Content Assist

1.將Word Completion的快捷鍵設為alt+C

2.將Content Assist的快捷鍵從ctrl+space改為alt+/

XML Content Assist

Word Completion 將剩餘的字自動完成

Content Assist 顯示提示視窗

 

Android java.lang.NoClassDefFoundError: org.jsoup.Jsoup

最近想要做一個android版的RSS Reader, 所以找了一些資料, 發現比較多範例是用jsoup這個第三方套件中的一些api來 取得xml的element, 也試了一下, 但一直出現:

 java.lang.NoClassDefFoundError: org.jsoup.Jsoup

因為我已經把jsoup.jar加到我的專案了(Select Android Project → Right Click →Properties → Java Build Path → Libraries → Add External JARs  → Select .jar→ OK→ OK )

我檢查了Android Project的Android Private Libraries和libs都有

但還是java.lang.NoClassDefFoundError:org.jsoup.Jsoup

所以我只好求助Google大神了

我先上StackOverFlow找到這個Android java.lang.NoClassDefFoundError: org.jsoup.Jsoup問題的答案

但試了一下發現這不適用我, 因為我的ADT已經upgrade到20+而且Android Project也有libs的資料夾(中文資源

但投票最多的答案有給一個linkNoClassDefFoundError – Eclipse and Android這個問答就解決我的問題了

看到第三個答案:

I didn’t have to put the jar-library in assets or lib(s), but only tick the box for this jar in Properties -> Java Build Path -> “Order and Export” (it was listed before, but not selected)  – by Till

 

其實第二個答案, 也有提到適合我的解決方法:

By adding the external jar into your build path just adds the jar to your package, but it will not be available during runtime.

In order for the jar to be available at runtime, you need to:

  • Put the jar under your assets folder
  • Include this copy of the jar in your build path
  • Go to the export tab on the same popup window
  • Check the box against the newly added jar  – by Anthony Forloney

其實, 這兩個答案說的都是一樣的事情(紅線的部份)

先撇開ADT Upgrade遇到的問題, 在ADT中加入第三方套件(.jar)的完整方式應該是:

Select Android Project → Right Click →Properties → Java Build Path → Libraries → Add External JARs  → Select .jar→ OK  → Order and Export  →Check the box against the newly added jar” → OK

看起來要Debug NoClassDefFoundError除了確認有沒有import正確的package, 再來就是檢查有沒有把.jar加入到Android Project重要的是要加入「正確」啊

關於 Android This LinearLayout view is useless 的問題

linearlayout_view_is_useless

最近正在學習Andorid, 碰到幾個個讓我很糾結的問題, 就挑個我覺得最蠢的來記錄一下吧…

上網查了下資料, 得到的結論就是 「他媽的好蠢, eclipses你他媽的好貼心

為了想要超前「行動裝置程式設計」這門課的進度,  這幾天一直在K課本 & 上 Android Developer查資料

身為一個菜鳥等級的Andorid Developer而言, IDE告訴我的資訊都足以決定我的心情起伏

所以最近的心情起伏好大…嗯, 不多說了開始說重點吧

這是一個當你放置2個(含)以上的Layout在同個xml中可能會碰到的問題

~本片開始~ 請就坐

這張圖是上面第一張圖的eclipse警告提示擷取圖

linearlayout_view_is_useless_warning

簡單的來說它想說的是這個LinearLayout是沒有用的, 因為少了一些有的沒的

接下來就加一些有的沒的吧

linearlayout_view_is_useless_2

顯然eclipse覺得我加的東西太少了(沒錯, 我無視於括號中的那些東西加的)

既然LinearLayout說它想要有個孩子(children)那麼我就大方一點, 送它吧

linearlayout_view_is_useless_3

現在LinearLayout有了一個(children)孩子, 它是TextView

顯然LinearLayout只要一個孩子(children)就滿足了XD, 因為..你注意到了嗎? 提示訊息好像稍微不一樣

變成:

This LinearLayout layout or its LinearLayout parent is useless

直接翻譯的話粉恐怖哦..

這個LinearLayout或是它的父母(LinearLayout)是沒有用的、無意義的

//Android菜鳥的OS: 怎麼好像越弄越糟…

//脾氣不好的Android菜鳥的OS: 靠..拎北加那麼東西你才跟我說沒用..WTF

還記得嗎? 有2個LinearLayout在同個xml而且它們是巢狀的(Nested)!!

linearlayout_view_is_useless_4

我已經把裡面的LinearLayout加上了一個TextView

eclipse卻告訴我這兩個LinearLayout其中有1個是沒用的、無意義的

其實, 只要仔細觀察當下的狀況就會發現

到目前為止我做的事情是沒有意義的, 2個LinearLayout中只放1個元件(TextView)…OTZ

真是多此一舉, 其實只要1個LinearLayout就可以了

或者…我只是還沒幫另外1個LinearLayout加上其他元件

對..我是後者!一直糾結這個警告訊息

其實我只是等一下就會放些元件到另1個LinearLayout裡面(真的只是「待會」、「馬上」)

linearlayout_view_is_useless_5

這樣eclipse就滿意了..

這個「我待會就會去做但IDE還是會提醒你的事」在用任何IDE時開發都會碰到(其實這也算是IDE貼心的提醒)

其實這個情況有點類似用IDE寫程式時, 已經把method prototype寫好但還沒return的狀況

以eclipse和vistual studio為例:

elcipse:

linearlayout_view_is_useless_like_java

visual studio:

linearlayout_view_is_useless_like_visualstudio

該總結一下, 做個小筆記

hao的人性化筆記:

1.每個Layout都渴望有個孩子(children) 

2.IDE都好貼心

3.我好蠢