在Android应用程序上findViewById失败

时间:2011-05-26 14:36:59

标签: java android

所以,从Android和Java开始,我遇到了这个令人困惑的错误:当到达findViewByID(R.id.answer)时,应用程序会因意外停止消息而失败,但前提是我在代码中添加了另一个消息。

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical" android:layout_width="match_parent"
            android:layout_height="match_parent">
  <LinearLayout android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/site" />
    <EditText android:id="@+id/site" 
             android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_weight="1"/>
  </LinearLayout>
  <!-- 
  <LinearLayout android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/username" />
    <EditText android:id="@+id/username" 
      android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_weight="1"/>
  </LinearLayout>
   -->
  <LinearLayout android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/password" />
    <EditText android:id="@+id/password" 
      android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_weight="1"/>
  </LinearLayout>
  <LinearLayout android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/question" />
    <EditText android:id="@+id/question" 
      android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_weight="1"/>
  </LinearLayout>
  <LinearLayout android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/answer" />
    <EditText android:id="@+id/answer" 
      android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_weight="1"/>
  </LinearLayout>
  <Button android:id="@+id/confirm" 
          android:text="@string/confirm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
</LinearLayout>

OnCreate方法

 super.onCreate(savedInstanceState);
 setContentView(R.layout.keyedit);
 setTitle(R.string.edit_entry);
 mDbHelper = new KeyRingDbAdapter(this);
 mDbHelper.open();
 mSiteText = (EditText) findViewById(R.id.site);
 //mUsernameText = (EditText) findViewById(R.id.username);
 mPasswordText = (EditText) findViewById(R.id.password);
 mQuestionText = (EditText) findViewById(R.id.question);
 mAnswerText = (EditText) findViewById(R.id.answer);

因此,上述作品和行mAnswerText = (EditText) findViewById(R.id.answer);将正确的对象分配给mAnswerText。一旦我取消注释代码,之前工作的那条线就会失败。当我在图形布局上看到xml时,所有都显示正确。 R文件似乎没问题(我将其删除并重新生成,以防万一)。

有什么想法吗?还需要更多信息吗?

编辑:好吧,尴尬。昨晚我回到家,当我取消评论线路时,这次它起作用了。我作为程序员经验丰富,我做了足够的检查,知道不是我只是取消注释部分或做其他完全愚蠢的事情。虽然它可能与我刚接触Eclipse的事实有关。不酷,因为现在错误已被“神奇地”修复,我不是更明智的。

2 个答案:

答案 0 :(得分:0)

当然你输入了正确的R?有两个,确保你没有输入错误的......

答案 1 :(得分:0)

我今天遇到了同样的问题。在RelativeLayout中,我重新排序了布局xml文件 - 并得到了这个错误。

我清理了项目(Eclipse:Project / Clean)等等,它又恢复了工作。

Eclipse帮助:“清理 - 此命令会丢弃所有以前的构建结果。如果启用了autobuild,则会调用完整版本。”