Android资源ID突然不是最终的,字段无法解析

Jov*_*van 8 string variables resources android

我正在开发一个新旧的项目...我正在为不同的国家市场制作它,当我从一个旧项目中复制我的代码时,它显示了一些错误,如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();

                }
            });
Run Code Online (Sandbox Code Playgroud)

Com*_*are 12

引用http://tools.android.com/tips/non-constant-fields

解决方案很简单:将switch语句转换为if-else语句.

由于上面的代码片段似乎没有switch()声明,但您的问题引用了一个switch()声明,我假设您的代码错误.


and*_*per 10

如果你的id的switch-case在一个库中,遗憾的是新的ADT版本不支持它.

但是,您可以轻松将其转换为if-else,如Google的网站所示:

http://tools.android.com/tips/non-constant-fields
Run Code Online (Sandbox Code Playgroud)


小智 7

从ADT 14开始,资源字段不能用作交换机案例.

这也发生在我身上,即使我没有在switch语句中使用R变量,我也收到了这个错误.不要被错误消息误导.你基本上有一些与R.java文件有关的错误.确保你没有导入R.java,因为你应该拥有自己的.java.删除您的R.java文件,构建项目,并查看是否生成了R.java文件.如果没有,您可能会遇到阻止R.java文件更新的错误.尝试Project> Clean以查找任何错误.摆脱错误并重建项目,以便生成R.java文件并使其保持最新状态.

  • @JasonRobinson截至ADT 14,R常数不是图书馆项目的最终版本.请参见http://tools.android.com/tips/non-constant-fields (5认同)

Ogn*_*yan 5

可能你只需要Clean你的项目,即项目 - >主菜单中的清洁.上面的代码中不应该有错误.问题只在于switch陈述.请尝试清理并在此评论结果是什么.