Java 迁移到Android Studio时强制转换
我正在做一个基于Eclipse的老项目,并在Android Studio中打开它。最初是用1.7版构建的,现在我使用1.8版,尝试了1.7版却没有成功 我的主要问题是出现以下3个错误:Java 迁移到Android Studio时强制转换,java,android,eclipse,casting,sdk,Java,Android,Eclipse,Casting,Sdk,我正在做一个基于Eclipse的老项目,并在Android Studio中打开它。最初是用1.7版构建的,现在我使用1.8版,尝试了1.7版却没有成功 我的主要问题是出现以下3个错误: float size = (float) Float.parseFloat(v.getTag(R.string.size)); 错误: 代码: int pos=(int)v.getTag(R.string.pos) 代码: 错误: 我知道它正在尝试将一个对象转换为整数。我试过几种可能的解决办法,但没有成功。代码
float size = (float) Float.parseFloat(v.getTag(R.string.size));
错误:
代码:
int pos=(int)v.getTag(R.string.pos)
代码:
错误:
我知道它正在尝试将一个对象转换为整数。我试过几种可能的解决办法,但没有成功。代码中有任何可能的变化,我显然不能考虑吗
谢谢 v.getTag(R.string.size)
返回一个对象
。它可以是任何物体。您需要将其显式转换为字符串
float size = (float) Float.parseFloat((String)(v.getTag(R.string.size)));
第二个和第三个在我看来很奇怪。将Object
强制转换为int
,应首先将其强制转换为Integer
,然后对强制转换的对象调用intValue()
顺便说一句,android不支持java 1.8为了帮助您,完整的代码块(第一个和第三个代码块已被替换)现在是:
public void onClick(View v) {
String type = (String) v.getTag(R.string.type);
float size = (float) Float.parseFloat((String)(v.getTag(R.string.size)));
int pos = (int) v.getTag(R.string.pos);
if (type.equals("white")) {
// Play sound!
Log.d("DEBUG", "White note, Size: " + size + ", Position (left to right): " + pos);
} else if (type.equals("black")) {
int parentpos = Integer.parseInt(v.getTag(R.string.parentpos).toString());
// Play sound!
Log.d("DEBUG", "Black note, Size: " + size + ", Parent Position (left to right): " + parentpos + ", Position (top to bottom): " + pos);
}
}
第一个和第三个问题解决了,但第二个问题没有解决。我不知道是否出了什么问题,但应该不会,因为该应用程序是我和一位朋友大约两年前开发的,当时似乎没有问题。但第二个等于第三个。它不会发送任何信息,是吗?
int parentpos = (int) v.getTag(R.string.parentpos);
Error: Error:(234, 63) java: incompatible types: java.lang.Object cannot be converted to int
float size = (float) Float.parseFloat((String)(v.getTag(R.string.size)));
public void onClick(View v) {
String type = (String) v.getTag(R.string.type);
float size = (float) Float.parseFloat((String)(v.getTag(R.string.size)));
int pos = (int) v.getTag(R.string.pos);
if (type.equals("white")) {
// Play sound!
Log.d("DEBUG", "White note, Size: " + size + ", Position (left to right): " + pos);
} else if (type.equals("black")) {
int parentpos = Integer.parseInt(v.getTag(R.string.parentpos).toString());
// Play sound!
Log.d("DEBUG", "Black note, Size: " + size + ", Parent Position (left to right): " + parentpos + ", Position (top to bottom): " + pos);
}
}