2011-09-23 77 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