Я столкнулся с очень неприятной проблемой с одним из моих приложений.Ошибка Android NoSuchField в R.java после завершения процесса
У меня есть активность с заставкой, которая загружает некоторые исходные данные для моего приложения, а затем запускает основное действие и заканчивается сама.
Как только основное действие выполняется, я запускаю приложение, нажав домашний ключ, а затем убью процесс для своего приложения.
Когда я перезапустить мое приложение, то SplashScreen пытается бежать, но не как только я пытаюсь получить доступ к любому из полей в моем R.java файле:
К примеру, я сразу попытаться установить текст TextView так:
((TextView)findViewById(R.id.splash_tv_1)).setText(application.getLanguage().pleasewait);
Это проливает следующее исключение:
06-29 11:18:14.661: ERROR/AndroidRuntime(21427): java.lang.NoSuchFieldError: com.pagesuite.android.reader.framework.R$id.splash_tv_1
Затем, когда я запускаю его снова это нормально.
Я получаю такое же поведение, если я убью приложение с помощью инструмента TaskKiller (что-то, о чем я знаю, многие пользователи будут наивно использовать подозреваемые) или если ОС убивает мой процесс.
Любые идеи?
EDIT:
Просто заметил в LogCat, как раз перед OnCreate() это действие выполняется следующее регистрируется:
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
Эти три случая, когда я пытаюсь получить доступ к R. id в моем классе.
Одна вещь, чтобы отметить, что я называю:
setContentView(R.layout.ps_splashscreen);
и, кажется, для запуска этой строки штраф, так что это R.id-х в частности, что, кажется, не хватает.
EDIT: Вот раскладка:
<?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>
Вы можете разместить код и расположение XML для экранной заставки? –