移动项目后访问 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**;