2011-09-23 74 views
-2

我正在學習如何編寫Android應用程序,並且遇到了與學習通用語言相同的問題 - 數據類型無法處理!Android開發一般問題

爲什麼很難將數據從一種類型轉換爲另一種類型?爲什麼一切都使用複雜的自定義數據集?我試圖找出現在的問題是一個很好的例子:Android位置服務API。當我最終從Android獲取位置數據時,它在這個特殊的位置類型中根本不會轉換爲基本字符串。使用諸如whatever.getLatitude()的內置類型也不起作用。同樣,爲什麼API/OS很難提供一個簡單的轉換例程?

示例應用程序往往永遠不會幫助,即使我得到一個編譯它仍然崩潰。作爲一名初學者,我不在乎製作一個按鈕或任何其他的東西,我想在文本框中看到位置數據 - 這將是一個更好的介紹示例應用程序,然後你好,世界。

如果有人想給我如何應對Android的不同的數據類型,這將是有幫助的指針,但老實說,我張貼了這個聽見原因數據轉換必須是這樣一個頭痛的問題。

謝謝大家!

+2

從Location類(以及其他所有人都知道的類):'toString() 返回一個字符串,其中包含此對象的簡明易懂的描述.' – Otra

+4

您是否有任何Java使用經驗?如果不是,我強烈建議你從那裏開始,以便更好地掌握面向對象設計原則。 Head First Java是初學者的好書 – FoamyGuy

+0

Location.getLatitude()如何不起作用?你期望它返回與它實際返回什麼? –

回答

2

由於Java是面向對象的語言,並且Android API基於OOP原則。這不是問題 - 它爲你帶來了好處。例如,你的位置可以提供太多的信息和方法。查看API http://developer.android.com/reference/android/location/Location.html API提供對態度,緯度,經度等的訪問。如果您想要查看所有這些字段的字符串化表示,可以嘗試調用toString()方法以進行調試或記錄。但這不是任何其他目的的好方法。

+0

感謝adbmob。我無法使用toString()來完成工作,也許DDMS數據沒有進入虛擬機或其他東西 – Navic

+0

你是如何打印String的? –

+0

@CheJami - 許多不同的方式。這個問題有3個不同的示例應用程序,如果Location.getLatitude()和/或Location.toString()被註釋掉,所有這些應用程序都只能在VM上運行。謝謝。 – Navic

0

每當我使用某種格式的數據時,我並不是很喜歡或包含比我需要的更多信息,或者信息需要以更合適的形式「翻譯」以達到我的目的,我創建了我的自己的對象模型和翻譯層。例如,當我使用一個web服務時,我需要解析json或xml數據。我只是創建一個包(或名稱空間,如果我在.Net世界)稱爲模型和一個名爲翻譯。模型對象是我的應用程序需要的數據。翻譯器類接收數據並返回我的對象​​。這同樣適用於對象到對象的翻譯,而不僅僅是像json和xml這樣的原始數據。這需要很少的時間,當你編寫自己的幫助程序時(例如,當我使用Android時,我使用Java創建的JSONHelper類),只需將其從項目複製到項目,使工作流程更快。

0

這是基本的Java/OOP,但這也是一個關於映射數據值的問題。例如,您不能簡單地嘗試計算兩個不是兩個數字的數字的值。

「6」(一個字符串)不等於6的數值,除非您告訴該類識別該值。

使用bastardized的Java/C#

String x = new String ("6"); 
int xi = 6; 

return !x.equals(xi)// would actually fail 

代替

return xi == Integer.parseInt(x); 

因此,應用程序和類的每個部分需要能夠理解你逝去的東西作爲參數。獲取Tim的建議書或查閱Oracle網站(或網絡上)上的各種Java教程。

+1

你的權利。這不僅僅是關於Java/OOP。這也是關於靜態類型語言與動態類型語言。靜態類型化語言中的6!=「6」。您需要手動將其轉換爲完全解釋您的動機。這是靜態類型語言的力量,你不會犯一些類型的錯誤。但對於一些其他任務更可接受的另一種行爲和動態類型語言更可接受。 – abdolence