移动项目后访问 R 资源时出错
Error accessing R resource after moving project
我的项目源文件不完整。我用这些填充了一个新创建的项目。但是现在我无法访问 R.string 资源。
顺便一提;我想指出的是,我也尝试了 https://www.geeksforgeeks.org/different-ways-to-fix-cannot-resolve-symbol-r-in-android-studio/ 网站上列出的所有解决方案。
我收到以下错误。
错误:找不到符号
Toast.makeText(这, R.string.permission_audio, Toast.LENGTH_SHORT).show();
^
符号:变量 permission_audio
位置:class 字符串
protected void checkPermissionResult(final int requestCode, final String permission, final boolean result) {
// show Toast when there is no permission
if (Manifest.permission.RECORD_AUDIO.equals(permission)) {
onUpdateAudioPermission(result);
if (!result) {
Toast.makeText(this, R.string.permission_audio, Toast.LENGTH_SHORT).show();
}
}
if (Manifest.permission.WRITE_EXTERNAL_STORAGE.equals(permission)) {
onUpdateExternalStoragePermission(result);
if (!result) {
Toast.makeText(this, R.string.permission_ext_storage, Toast.LENGTH_SHORT).show();
}
}
if (Manifest.permission.INTERNET.equals(permission)) {
onUpdateNetworkPermission(result);
if (!result) {
Toast.makeText(this, R.string.permission_network, Toast.LENGTH_SHORT).show();
}
}
}
protected boolean checkPermissionWriteExternalStorage() {
if (!PermissionCheck.hasWriteExternalStorage(this)) {
MessageDialogFragment.showDialog(this, REQUEST_PERMISSION_WRITE_EXTERNAL_STORAGE,
R.string.permission_title, R.string.permission_ext_storage_request,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE});
return false;
}
return true;
}
protected boolean checkPermissionAudio() {
if (!PermissionCheck.hasAudio(this)) {
MessageDialogFragment.showDialog(this, REQUEST_PERMISSION_AUDIO_RECORDING,
R.string.permission_title, R.string.permission_audio_recording_request,
new String[]{Manifest.permission.RECORD_AUDIO});
return false;
}
return true;
}
AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ScreenRecordingSample</string>
</resources>
我想你可能对R
到底是什么缺乏基本的了解。它基本上是引用 res
文件夹中任何内容的方式。如果您没有名为 permission_audio
的字符串,您也无法使用它。所有这些 R.string
值都是您需要在项目中的 res 文件夹中自己定义的值。
字符串通常在 res\values\strings.xml
中定义
在里面你会发现类似
的东西
<resources>
<string name="app_name">App name</string>
</resources>
这里还需要定义所有其他字符串,所以如果将其更改为
<resources>
<string name="app_name">App name</string>
<string name="permission_audio">Text for showing permission audio</string>
</resources>
你会注意到 R.string.permission_audio
不会再报错了
只需在您的 Activity
中导入下面的资源文件
import **com.*yourPackageName*.R**;
如果您的 activity 在某个文件夹中,请在 Import 语句中添加文件夹名称。
import **com.yourPackageName.*FolderName*.R**;
我的项目源文件不完整。我用这些填充了一个新创建的项目。但是现在我无法访问 R.string 资源。 顺便一提;我想指出的是,我也尝试了 https://www.geeksforgeeks.org/different-ways-to-fix-cannot-resolve-symbol-r-in-android-studio/ 网站上列出的所有解决方案。
我收到以下错误。
错误:找不到符号
Toast.makeText(这, R.string.permission_audio, Toast.LENGTH_SHORT).show();
^ 符号:变量 permission_audio 位置:class 字符串
protected void checkPermissionResult(final int requestCode, final String permission, final boolean result) {
// show Toast when there is no permission
if (Manifest.permission.RECORD_AUDIO.equals(permission)) {
onUpdateAudioPermission(result);
if (!result) {
Toast.makeText(this, R.string.permission_audio, Toast.LENGTH_SHORT).show();
}
}
if (Manifest.permission.WRITE_EXTERNAL_STORAGE.equals(permission)) {
onUpdateExternalStoragePermission(result);
if (!result) {
Toast.makeText(this, R.string.permission_ext_storage, Toast.LENGTH_SHORT).show();
}
}
if (Manifest.permission.INTERNET.equals(permission)) {
onUpdateNetworkPermission(result);
if (!result) {
Toast.makeText(this, R.string.permission_network, Toast.LENGTH_SHORT).show();
}
}
}
protected boolean checkPermissionWriteExternalStorage() {
if (!PermissionCheck.hasWriteExternalStorage(this)) {
MessageDialogFragment.showDialog(this, REQUEST_PERMISSION_WRITE_EXTERNAL_STORAGE,
R.string.permission_title, R.string.permission_ext_storage_request,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE});
return false;
}
return true;
}
protected boolean checkPermissionAudio() {
if (!PermissionCheck.hasAudio(this)) {
MessageDialogFragment.showDialog(this, REQUEST_PERMISSION_AUDIO_RECORDING,
R.string.permission_title, R.string.permission_audio_recording_request,
new String[]{Manifest.permission.RECORD_AUDIO});
return false;
}
return true;
}
AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ScreenRecordingSample</string>
</resources>
我想你可能对R
到底是什么缺乏基本的了解。它基本上是引用 res
文件夹中任何内容的方式。如果您没有名为 permission_audio
的字符串,您也无法使用它。所有这些 R.string
值都是您需要在项目中的 res 文件夹中自己定义的值。
字符串通常在 res\values\strings.xml
在里面你会发现类似
的东西<resources>
<string name="app_name">App name</string>
</resources>
这里还需要定义所有其他字符串,所以如果将其更改为
<resources>
<string name="app_name">App name</string>
<string name="permission_audio">Text for showing permission audio</string>
</resources>
你会注意到 R.string.permission_audio
不会再报错了
只需在您的 Activity
中导入下面的资源文件import **com.*yourPackageName*.R**;
如果您的 activity 在某个文件夹中,请在 Import 语句中添加文件夹名称。
import **com.yourPackageName.*FolderName*.R**;