为什么我的findViewById()找不到我在我的xml代码中引入的ID?

时间:2013-03-12 18:01:18

标签: java android eclipse

我是Android应用开发的新手。但在我的第一个项目中,我遇到了一个错误。我的findViewById()找不到xml代码中引入的Id

这是我的Java代码:

package com.example.fuzzylogic;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
int counter;
Button add, sub;
TextView display;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        counter = 0;
        add = (Button) findViewById(R.id.bAdd);
        sub = (Button) findViewById(R.id.bSubtract);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

这是我的xml代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/tvDisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="Your total is 0"
    android:textSize="45dp" />

<Button
    android:id="@+id/bAdd"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tvDisplay"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    android:text="add one"
    android:textSize="25dp" />

<Button
    android:id="@+id/bSubtract"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/bAdd"
    android:layout_below="@+id/bAdd"
    android:layout_marginTop="23dp"
    android:text="substract one"
    android:textSize="25dp" />



</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

  

我的findViewById()找不到已经引入的ID   xml代码。

所以这可能导致:

  • XML文件中的错误,然后R.java未正确生成
  • 您没有保存所有已编辑的xml文件(ctrl + s)

因此,请确保项目中没有错误并清理和重建项目。

答案 1 :(得分:0)

首先,您必须保存xml文件并重建它

当您添加新文件或更改资源文件时,您最好重建项目,它将修改与您所做更改相对应的R.java文件

并且在findViewById()中我们传递的id不是布局xml文件中的id。实际上它是R.java文件中资源对象的整数表示

注意:如果您使用的是eclipse,则选择自动构建选项

答案 2 :(得分:0)

我有同样的问题,我之所以遇到问题的原因是R类没有使用我添加的新Xml文件资源进行更新。所以我重建了这个项目,繁荣的问题得到了解决。

因此,重建项目可能有所帮助。