迁移到 Android Studio 时投射
Casting when migrating to Android Studio
我正在处理一个基于 Eclipse 的旧项目,并在 Android Studio 中打开它。最初使用 1.7 版构建,我现在使用 1.8 版,尝试过 1.7 版但没有成功。
我的主要问题是出现以下 3 个错误:
float size = (float) Float.parseFloat(v.getTag(R.string.size));
Error:
Error: Error:(228, 71) java: incompatible types: java.lang.Object cannot be converted to java.lang.String
代码:
int pos = (int) v.getTag(R.string.pos);
Error: Error:(229, 49) java: incompatible types: java.lang.Object cannot be converted to int
Code:
int parentpos = (int) v.getTag(R.string.parentpos);
Error:
Error: Error:(234, 63) java: incompatible types: java.lang.Object cannot be converted to int
我知道它正在尝试将对象转换为整数。我尝试了几种可能的解决方案,但没有运气。代码中是否有任何我显然无法考虑的可能更改?
谢谢!
v.getTag(R.string.size)
returns 一个 Object
。它可以是任何对象。您需要将其显式转换为 String
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);
}
}
我正在处理一个基于 Eclipse 的旧项目,并在 Android Studio 中打开它。最初使用 1.7 版构建,我现在使用 1.8 版,尝试过 1.7 版但没有成功。
我的主要问题是出现以下 3 个错误:
float size = (float) Float.parseFloat(v.getTag(R.string.size));
Error:
Error: Error:(228, 71) java: incompatible types: java.lang.Object cannot be converted to java.lang.String
代码: int pos = (int) v.getTag(R.string.pos);
Error: Error:(229, 49) java: incompatible types: java.lang.Object cannot be converted to int
Code:
int parentpos = (int) v.getTag(R.string.parentpos);
Error:
Error: Error:(234, 63) java: incompatible types: java.lang.Object cannot be converted to int
我知道它正在尝试将对象转换为整数。我尝试了几种可能的解决方案,但没有运气。代码中是否有任何我显然无法考虑的可能更改?
谢谢!
v.getTag(R.string.size)
returns 一个 Object
。它可以是任何对象。您需要将其显式转换为 String
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);
}
}