Android resource IDs suddenly not final, fields ca

2019-04-24 14:28发布

I'm working on a new-old project... I'm making it for a different country market, and when i copyed my code from an old project it shows some mistake like MIGRATE ANDROID CODE (As of ADT 14, resource fields cannot be used as switch cases.) This happens for a resourses that are in strings.xml file and for layout. But it doesn't give me some posible fix... how can i fix it???? Here is code:

 @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();

                }
            });

10条回答
【Aperson】
2楼-- · 2019-04-24 14:52

Today i was facing the same error, my eclipse project have 1 project library added, and i was about to change all the code to if statements, but i realize my project had the library check on, in project ->properties-> android, so i just turn it down and that was the solution to the problem, it also was a suggestion of eclipse itself, reading carefully android migration code adt 14 constants warning for project libraries.

查看更多
等我变得足够好
3楼-- · 2019-04-24 14:56

I fixed this by changing my import from android.r; to android.R.*;

It cleared all of my errors and i was able to compile my app again.

查看更多
甜甜的少女心
4楼-- · 2019-04-24 14:56

Just select in eclipse project -> clean, and the problem was solved. I got this error just by creating a new package in my app and removing it.

查看更多
虎瘦雄心在
5楼-- · 2019-04-24 14:56

I tried all the approaches mentioned above regarding deleting the generated R.java file, clean, rebuild, etc but that approach did not work for me.

What did work was replacing the case with an else-if chain which was a messy fix in my opinion but I couldn't get it to work any other way.

I'm using Eclipse 4.2.1 and Android SDK 4.2.2

查看更多
Bombasti
6楼-- · 2019-04-24 14:57

Probably you just need to Clean your project, i.e. Project -> Clean from the main menu. There should not be errors in the code above. The problem is only with switch statements. Please try to clean and comment here what is the result.

查看更多
你好瞎i
7楼-- · 2019-04-24 15:00

As of ADT 14, resource fields cannot be used as switch cases.

This happened to me too, I got this error even though I wasn't using the R variable in a switch statement. Don't be mislead by the error message. You basically have some error that relates to the R.java file. Make sure you don't import R.java since you should have your own. Delete your R.java file, build project, and see if your R.java file gets generated. If not, you could have an error that is preventing your R.java file from being updated. Try Project > Clean to find any errors. Get rid of the errors and rebuild your project so that your R.java file gets generated and is up-to-date.

查看更多
登录 后发表回答