Android Studio 无法解析标识符 ID。

4

我遇到了这个问题:

EditText_Username = (EditText)findViewById(id.EditText_Username);

我遇到了一个错误:无法解析符号id 每一行包含id的代码都有同样的错误。 我尝试重新构建整个项目并与gradle同步,但错误仍然存在。 PS:即使在代码中有(id),应用程序在模拟器中正常启动。


你是否静态导入了 R.id?为什么这样做? - OneCricketeer
这个错误的典型问题是 XML 文件配置不正确。 - OneCricketeer
有没有办法纠正 XML 文件?我需要在我的 XML 文件中添加什么吗? - Rami
请检查您的布局,是否有任何错误或在 res 文件夹中某些位置配置错误.. - Arjun saini
你需要修复一个导入或语法错误,不一定要“添加”任何内容。如果您编辑问题并包含所有在错误和上次工作状态之间编辑的文件的[mcve],将有助于解决问题。 - OneCricketeer
也许在这里添加一些 XML?-但是请在此之前检查它是否为良好格式的XML;-) - Dilettant
6个回答

4

使用

EditText EditText_Username = (EditText)findViewById(R.id.EditText_Username);

请改为使用“而不是”。并确保您已经使用了“

”标签。
android:id="@+id/EditText_Username"

对于你在XML中使用Java类搜索的EditText对象,你需要通过Id进行搜索。


0

检查在同一作用域中是否有一个你可能已经命名为 R 的变量。如果存在这样的变量,将其重命名为其他名称。


0

查看您的AndroidManifest.xml文件,您将找到一个包ID。现在在您的Java文件中用packageId.R.id替换id。


0

正如@cricket_007所指出的那样,您可能已经静态导入了R类。

解决方法是,在代码的id.EditText_Username部分之前放置插入符号,然后按下Alt+Enter。在弹出窗口中,选择将静态导入扩展到R.id,然后选择替换所有并删除导入。现在您的import static语句已被删除,并且所有出现的情况都已重命名为R.id


0

你应该写 R.id。

代码首先被编译,然后在真实或虚拟设备上运行。因此,无法为模拟器编译而不是为真实设备编译。


0
你在用哪个类?是Activity还是Fragment?
如果是Fragment的话,
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_layout, container, false);
    EditText_Username = (EditText) view.findViewById(R.id.EditText_Username);
    return view;
}

同时,为了良好的编码习惯,将对象命名为小写字母,例如"editTextUsername" "etUsername", "imgThumb", "tvTitle"等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接