我遇到了这个问题:
EditText_Username = (EditText)findViewById(id.EditText_Username);
我遇到了一个错误:无法解析符号id
每一行包含id的代码都有同样的错误。
我尝试重新构建整个项目并与gradle同步,但错误仍然存在。
PS:即使在代码中有(id),应用程序在模拟器中正常启动。
我遇到了这个问题:
EditText_Username = (EditText)findViewById(id.EditText_Username);
我遇到了一个错误:无法解析符号id
每一行包含id的代码都有同样的错误。
我尝试重新构建整个项目并与gradle同步,但错误仍然存在。
PS:即使在代码中有(id),应用程序在模拟器中正常启动。
使用
EditText EditText_Username = (EditText)findViewById(R.id.EditText_Username);
android:id="@+id/EditText_Username"
对于你在XML中使用Java类搜索的EditText对象,你需要通过Id进行搜索。
检查在同一作用域中是否有一个你可能已经命名为 R 的变量。如果存在这样的变量,将其重命名为其他名称。
查看您的AndroidManifest.xml文件,您将找到一个包ID。现在在您的Java文件中用packageId.R.id替换id。
正如@cricket_007所指出的那样,您可能已经静态导入了R类。
解决方法是,在代码的id.EditText_Username
部分之前放置插入符号,然后按下Alt+Enter
。在弹出窗口中,选择将静态导入扩展到R.id
,然后选择替换所有并删除导入
。现在您的import static
语句已被删除,并且所有出现的情况都已重命名为R.id
。
你应该写 R.id。
代码首先被编译,然后在真实或虚拟设备上运行。因此,无法为模拟器编译而不是为真实设备编译。
@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"等。
R.id
?为什么这样做? - OneCricketeer