【Android Studio】Cannot resolve symbol R エラーの原因と解決法

この記事では「Cannot resolve symbol R エラーの原因と解決法」を紹介しています。

記事内では Android Studio 3.6 のスクリーンショットなどを使用していますが、他のバージョンにも対応しています。
原因
「Cannot resolve symbol R」を直訳すると「シンボルRを解決できない」となりますが、簡単に言うとアプリを実行した時(コンパイル時)に R が見つかりませんというエラーです。
例えば drawable フォルダに dog.png という画像を置いたアプリを作成・実行すると R$drawable クラスに
.field public static final dog:I = 0x0f123456
のように dog.png の id が自動的に作成されます。
画像以外でも res フォルダ内にある layout や values など全ての要素に対して R クラスに id が自動的に作成されますが、これが何らかの理由で作成できなかった時に「Cannot resolve symbol R」エラーとなってしまいます。
コードをコピー&ペーストしたり、画像や音声ファイルの名前を変更したときに起きやすいエラーです。
解決法
ほとんどの場合、Android Studio を再起動することで解決できます。
Android Studio の閉じるボタンを押して終了しても良いですが、Android Studio には再起動ボタンが用意されているので、より安全に再起動できるようにそちらを利用します。
Android Studio のメニューバーから「File」→「Invalidate Caches / Restart」を選択します。

ここでは再起動したいだけなので「Just Restart」を押します。

Invalidate は「キャッシュの破棄」、Cancel は「キャンセル」、Invalidate and Restart は「キャッシュを破棄して再起動」です。
完了
Android Studio が再起動されて、エラーが消えていれば完了です。
再起動してもエラーが消えない場合は、プロジェクトのパスやビルド設定が原因の可能性があるので、Logcat でエラーをご確認ください。