进程终止后R.java中的Android NoSuchField错误

进程终止后R.java中的Android NoSuchField错误,java,android,Java,Android,我的一个应用程序遇到了一个非常令人沮丧的问题 我有一个splashscreen活动,为我的应用程序加载一些初始数据,然后启动主活动并自行完成 主活动运行后,我会按home键设置应用程序的背景,然后终止应用程序的进程 当我重新启动我的应用程序时,splashscreen会尝试运行,但一旦我尝试访问我的R.java文件中的任何字段,就会失败: 例如,我立即尝试设置textview的文本,如下所示: ((TextView)findViewById(R.id.splash_tv_1)).setText(

我的一个应用程序遇到了一个非常令人沮丧的问题

我有一个splashscreen活动,为我的应用程序加载一些初始数据,然后启动主活动并自行完成

主活动运行后,我会按home键设置应用程序的背景,然后终止应用程序的进程

当我重新启动我的应用程序时,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工具(我知道很多用户都会天真地使用这个工具,我怀疑),或者如果操作系统杀死了我的进程,我也会有同样的行为

有什么想法吗

编辑:

刚才在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

编辑: 布局如下:

<?xml version="1.0" encoding="utf-8"?>



我也有同样的问题,它让我

DexOpt: couldn't find static field

错误,因为我有两个同名的布局xml文件,一个在外部库中,一个在项目中。我不知道这是否对其他人有用:)

我想我也看到了这个问题。您正在引用库项目吗?如果是这样的话,则可能会缺少R.java中的静态文件,因为Eclipse从另一个库将R.java导入到您的项目中时将其删除


请参阅:

您能为您的启动屏幕发布代码和xml布局吗?在我的帖子中说,我调用了setcontentview-如果我没有定义布局,它第一次到底会如何成功运行?!是的,如果我没记错的话,这就是问题所在。id位于库项目的布局文件中,我通过在使用库的项目中提供具有相同名称的布局来覆盖布局文件。但是,我没有输入我试图查找其Id的项,因此在编译时该字段没有生成,因此出现了NoSuchField异常。我已经搜索了几个小时来解决这个问题,就是这样!。非常感谢你
//Have you Define this line in your oncreat method

      setcontentview(R.layout.yourlayout);

 // clen code then run again.
DexOpt: couldn't find static field