Android Studio开发BMI计算器时,R.id.main报错无法解析符号id
解决方案:Cannot find symbol variable id 错误修复
这个错误的核心原因是你在代码中引用了R.id.main,但对应的布局文件activity_main.xml里并没有定义这个id,同时可能存在R文件生成异常的情况,按以下步骤解决:
1. 给根布局添加指定id
打开activity_main.xml,在最外层的LinearLayout标签中添加android:id="@+id/main"属性,修改后的根布局代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical">
2. 检查R文件导入是否正确
打开MainActivity.java,确保导入的是你项目包名下的R类,而不是系统的android.R:
- 正确导入:
import com.miramichelle.bmicalculator.R; - 如果发现有
import android.R;,直接删除这一行
3. 重新构建项目
之前的Clean操作可能没彻底解决问题,执行以下操作:
- 点击Android Studio顶部菜单栏的
Build->Rebuild Project,等待项目重新构建完成
错误信息回顾
C:\Users\using\Desktop\Android Projects\BMICalculator\app\src\main\java\com\miramichelle\bmicalculator\MainActivity.java:18: error: cannot find symbol
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
^
symbol: variable id
location: class R
你的代码参考
MainActivity.java
package com.miramichelle.bmicalculator; import android.os.Bundle; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); } }
activity_main.xml(修改前)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> <ImageView android:layout_width="100dp" android:layout_height="100dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="BMI Calculator" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Male" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Female" /> </LinearLayout> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Age" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Feet" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Inches" /> </LinearLayout> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Weight (kg)" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="calculate" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="23.6" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="You are a healthy weight!" /> </LinearLayout>
内容的提问来源于stack exchange,提问作者Starstella
相关产品推荐
相关产品推荐

