Android r、 id未重新生成
我试图创建一个简单的按钮示例,但添加以下代码时: mButton=按钮findViewByIdR.id.button1 它不会更新我的R.id文件。我已经尝试了所有的方法,包括确保启用自动构建、清理项目和更新SDK。这在1.6和2.2项目中都会发生 下面是完整代码的外观:Android r、 id未重新生成,android,button,Android,Button,我试图创建一个简单的按钮示例,但添加以下代码时: mButton=按钮findViewByIdR.id.button1 它不会更新我的R.id文件。我已经尝试了所有的方法,包括确保启用自动构建、清理项目和更新SDK。这在1.6和2.2项目中都会发生 下面是完整代码的外观: import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; p
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class NewTest extends Activity {
Button myButton;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton = (Button) findViewById(R.id.button1);
}
}
由于您使用的是基于XML的布局,请确保main.XML文件中有android:id属性,其值为@+id/button1……findViewById正在R.id文件中查找您引用的位置 您的代码不会导致文件更新,因为它只查找按钮 在布局中创建按钮将导致R.id文件更新
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button One"/>
由于您在context中使用findviewbyd,并且当前context的视图是main.xml,因此上面的按钮示例需要位于main.xml文件中。否则,如果在另一个.xml布局中有另一个具有相同名称的按钮,则该条目将出现在R.id文件中,但代码会给您一个空指针异常,因为按钮在您试图引用它的上下文中不存在。当您仅引用现有id时,它不会更新生成的R.java文件
它仅在您添加资源时更新。button01必须已经存在于一个.xml文件中,否则您的'findViewByIdR.id.button1'将无法编译。请确保在活动中为应用程序的R类正确导入:
import your.app.package.R;
更新:仅当您的Activity类不在.app.package包的根目录下时,才需要此隐式导入。在尝试遵循NotePadV1教程时,使用API 19并将布局编辑器设置为API 15时,我遇到了相同的问题。我无法从notes_row.xml文件中编译R.id.text1
最初,我只是将文本粘贴到xml文件中以生成布局。在尝试删除R和Clean失败后,我尝试完全删除notes\u行布局。当我重新创建布局时,我使用图形界面添加TextView对象的属性,只是Id@+Id/text1、宽度和高度。然后我做了一个清理和编译。它起作用了。在使用R.id之前保存您的项目。有些东西很可能是您的一个XML布局有错误,请将其发布以进行检查,但在执行此操作之前,请尝试清理项目,在eclipse中转到,project->clean->select project->clean。这不是它的工作方式。你不能像这样导入R,否则它根本不起作用。好吧,如果我注释掉R导入,那么我的按钮findViewByIdR.id.acceptBtnTop将停止工作。因此,我确信如果不导入自动生成的R类,上述代码将无法工作。由于主帖子中的代码不包含R导入,我建议检查它。哦,我的错误。我以为你在做导入android.R。因为那样不行。至于以上,这是没有必要的。您不需要在包中导入类。我不能改变我的反对票,除非你编辑question@Falmarri当前位置他现在编辑了答案,所以你可以更改投票@阿希米德:如果你需要在评论中引起别人的注意,请使用@user。为了清楚起见,我删除了布局,并重新创建了它。