J'ai rencontré un problème très frustrant avec l'une de mes applications.Android NoSuchField erreur dans R.java après le processus est tué
J'ai une activité splashscreen qui charge des données initiales pour mon application, puis lance l'activité principale et se termine.
Une fois l'activité principale en cours, j'applique l'application en appuyant sur la touche d'accueil, puis je mets fin au processus de mon application.
Quand je relance mon application, l'splashscreen essaie de courir, mais échoue dès que je tente d'accéder à l'un des champs dans mon fichier R.java:
Par exemple, j'essaie immédiatement de mettre le texte de un textview comme ceci:
((TextView)findViewById(R.id.splash_tv_1)).setText(application.getLanguage().pleasewait);
Ce lève l'exception suivante:
06-29 11:18:14.661: ERROR/AndroidRuntime(21427): java.lang.NoSuchFieldError: com.pagesuite.android.reader.framework.R$id.splash_tv_1
Puis, quand je lance à nouveau c'est bien. Je reçois le même comportement si je tue l'application en utilisant un outil TaskKiller (quelque chose que je sais que beaucoup d'utilisateurs utiliseront naïvement je suspecte) ou si le système d'exploitation tue mon processus.
Des idées?
EDIT:
Juste remarqué dans le logcat, juste avant onCreate() de cette activité exécute, ce qui suit est enregistré:
06-29 11:18:14.571: WARN/dalvikvm(21427): VFY: unable to resolve static field 1945 (splash_logo) in Lcom/pagesuite/android/reader/framework/R$id;
06-29 11:18:14.571: DEBUG/dalvikvm(21427): VFY: replacing opcode 0x60 at 0x0000
06-29 11:18:14.571: DEBUG/dalvikvm(21427): VFY: dead code 0x0002-0010 in Lcom/pagesuite/android/reader/framework/activities/PS_Splashscreen;.loadLogoImg (Lcom/pagesuite/android/reader/framework/xml/appsettings/PS_AppSettings;)V
06-29 11:18:14.571: DEBUG/dalvikvm(21427): DexOpt: couldn't find static field
06-29 11:18:14.571: WARN/dalvikvm(21427): VFY: unable to resolve static field 1946 (splash_tv_1) in Lcom/pagesuite/android/reader/framework/R$id;
06-29 11:18:14.571: DEBUG/dalvikvm(21427): VFY: replacing opcode 0x60 at 0x0000
06-29 11:18:14.571: DEBUG/dalvikvm(21427): VFY: dead code 0x0002-0039 in Lcom/pagesuite/android/reader/framework/activities/PS_Splashscreen;.setLanguage()V
06-29 11:18:14.571: DEBUG/dalvikvm(21427): DexOpt: couldn't find static field
06-29 11:18:14.571: WARN/dalvikvm(21427): VFY: unable to resolve static field 1946 (splash_tv_1) in Lcom/pagesuite/android/reader/framework/R$id;
06-29 11:18:14.571: DEBUG/dalvikvm(21427): VFY: replacing opcode 0x60 at 0x0000
06-29 11:18:14.571: DEBUG/dalvikvm(21427): VFY: dead code 0x0002-0020 in Lcom/pagesuite/android/reader/framework/activities/PS_Splashscreen;.setTextColors()V
Ce sont les trois cas où je tente d'accéder à R. id dans ma classe.
Une chose à noter est que j'appelle:
setContentView(R.layout.ps_splashscreen);
et il semble fonctionner cette fin de ligne, il est donc plus précisément que semble de la R.id à manquer.
EDIT: Voici la mise en page:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:id="@+id/splash_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/splash_tv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Please wait"
android:textColor="@color/white"
android:textSize="20dip" />
<TextView
android:id="@+id/splash_tv_2"
android:layout_marginTop="20dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Loading..."
android:textColor="@color/white" />
</LinearLayout>
Pouvez-vous poster le code et la mise en page de xml pour votre écran de démarrage? –