我正在开发一个新旧项目...我正在为不同的国家市场制作它,当我从一个旧项目中复制我的代码时,它显示了一些错误,如MIGRATE ANDROID CODE(截至ADT 14) ,资源字段不能用作切换案例。)对于strings.xml文件和布局中的资源,会发生这种情况。 但它并没有给我一些可靠的解决方案......我怎么能解决它????这是代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Here is mistake
setContentView(R.layout.main);
//Kreira AlertDialog sa dva dugmeta koji ce se pojaviti pri aktiviranju aplikacije
ad = new AlertDialog.Builder(this).create();
//And HERE
ad.setTitle(getString(R.string.vasa_trenutna_lokacija));
//And HERE
ad.setMessage(getString(R.string.da_bi_ste_koristili_aplikaciju));
//And HERE
ad.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.dozvoli), new DialogInterface.OnClickListener() {
//Klikom na dugme Dozvoli otvara se novi prozor
@Override
public void onClick(DialogInterface ad, int which) {
Intent i = new Intent(NiskiMerakActivity.this, TrenutnaLokacija.class);
startActivity(i);
finish();
}
});
ad.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.ne_dozvoli),new DialogInterface.OnClickListener() {
//Klikom na dugme Ne dozvoli aplikacija se zatvara
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
答案 0 :(得分:12)
引用http://tools.android.com/tips/non-constant-fields
解决方案很简单:将switch语句转换为if-else语句。
由于上面的代码段似乎没有switch()
语句,但您的问题引用了switch()
语句,我认为您的代码错误。
答案 1 :(得分:10)
如果你的ids的开关盒位于一个库中,遗憾的是新的ADT版本不支持它。
但是,您可以轻松将其转换为if-else,如Google的网站所示:
http://tools.android.com/tips/non-constant-fields
答案 2 :(得分:7)
自ADT 14起,资源字段不能用作交换机案例。
这也发生在我身上,即使我没有在switch语句中使用R变量,也遇到了这个错误。不要被错误消息误导。你基本上有一些与R.java文件有关的错误。确保你没有导入R.java,因为你应该拥有自己的.java。删除您的R.java文件,构建项目,并查看是否生成了R.java文件。如果没有,您可能会遇到阻止R.java文件更新的错误。试试Project>清洁以找到任何错误。摆脱错误并重建项目,以便生成R.java文件并使其保持最新状态。
答案 3 :(得分:5)
可能你只需要Clean
你的项目,即项目 - >从主菜单中清除。
上面的代码中不应该有错误。问题仅出在switch
语句中。
请尝试清理并在此评论结果是什么。
答案 4 :(得分:2)
我通过将导入从android.r;
更改为android.R.*;
它清除了我的所有错误,我能够再次编译我的应用程序。
答案 5 :(得分:1)
今天我遇到了同样的错误,我的eclipse项目添加了1个项目库,我正要将所有代码更改为if语句,但我意识到我的项目已经在项目中检查了库 - >属性 - > android,所以我只是把它关闭,这是问题的解决方案,它也是eclipse本身的建议,仔细阅读android迁移代码adt 14常量警告项目库。
答案 6 :(得分:1)
我发现在更改R的import语句以包含您的包名后,它可以正常工作。
例如:
导入android.R;
现在是
import com.name.package.R;
答案 7 :(得分:0)
只需在eclipse项目中选择 - >干净,问题解决了。我只是在我的应用程序中创建一个新包并删除它,我得到了这个错误。
答案 8 :(得分:0)
以下是帮助我解决此问题的步骤。
这些步骤解决了我的工作问题。
答案 9 :(得分:0)
我尝试了上面提到的关于删除生成的R.java文件,清理,重建等的所有方法,但这种方法对我不起作用。
在我看来,用else-if链代替这个案例的工作是什么,但是我无法让它以任何其他方式工作。
我正在使用Eclipse 4.2.1和Android SDK 4.2.2