web-dev-qa-db-ja.com

Android St​​udio:Gradle:エラー:シンボル変数が見つかりません

私は自分のアプリで作業していましたが、Javaで画像を表示しようとするまではすべて正常でした。

アプリを1回実行したところ、正常に実行され、画像が表示されました。その後、いくつかのライブラリをインポートするように求められ、それらをインポートしました。その後、アクティビティにエラーが発生しました。

次のようなエラー:

Gradle: error: cannot find symbol variable activity_main
Gradle: error: cannot find symbol variable button1
Gradle: error: cannot find symbol variable button2
Gradle: error: cannot find symbol variable textView
Gradle: error: cannot find symbol variable secondActivity

MainActivityでは、これらのライブラリをインポートしました。

import Android.R;
import Android.content.Intent;
import Android.os.Bundle;
import Android.app.Activity;
import Android.view.Menu;
import Android.widget.Button;

secondActivityではこれら:

import Android.R;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.Button;

誰もこれを修正する方法を知っていますか?

編集:import Android.R;を削除しましたが、今では正常に動作します。

52
user2668638

Android.Rをインポートしないでください。それは自動的に生成され認識されるはずです。 この質問 インポートを削除した後にRを参照する際にエラーが発生した場合、多くの役立つヒントが含まれています。

これらのエラーが表示される場合、インポートを削除した後のいくつかの基本的な手順:

  • ビルドをきれいにしてから再構築する
  • XMLファイルにエラーやタイプミスがないことを確認してください
  • リソース名が[a-z0-9.]で構成されていることを確認してください。何らかの理由で大文字や記号は使用できません。
  • Gradle同期を実行します(ツール> Android> Gradleファイルとプロジェクトを同期)。
66
BLaZuRE

複数のフレーバー?を使用している場合

-リソースファイルが、フレーバーの1つだけとmainの両方で宣言/追加されていないことを確認します。

例:シンボル変数を含むa_layout_file.xmlファイル

src:

flavor1/res/layout /(ファイルなし)

flavor2/res/layout/a_layout_file.xml

メイン/res/layout/a_layout_file.xml

この設定ではエラーが発生します:シンボル変数が見つかりません。これは、リソースファイルが両方のフレーバーにしか存在できないためですまたはメインのみ.

24
TouchBoarder

プロジェクトでString build configフィールドを使用している場合、これが該当する可能性があります。

buildConfigField "String", "source", "play"

上記のように文字列を宣言すると、エラーが発生します。修正するには、次のように変更します。

buildConfigField "String", "source", "\"play\""
14
Sean Goudarzi

インポートされたRが別のモジュールからのものでないことを確認してください。クラスをモジュールからメインプロジェクトに移動しましたが、Rはモジュールからのものでした。

1
Alberto M

Android studioでプロジェクトを開き、ファイルをクリックし、[キャッシュの無効化/再起動]をクリックします

0
RanaUmer

.ScanActivityファイルにMainActivityAndroidManifest.xmlがあることを確認してください。

<activity Android:name=".MainActivity">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity Android:name=".ScanActivity">

    </activity>
0

変数がそれを参照しているメソッドのスコープ内にあることを確認してください。たとえば、クラス内のメソッドでtextviewをローカルで定義し、別のメソッドでそれを参照していました。

他のメソッドが定義にアクセスできるように、textview定義をメソッドの外側のクラス定義のすぐ下に移動して、問題を解決しました。

0
Jazzmine

上記の@TouchBoarderの答えに代わるもう1つの方法は、同じ名前で異なるapiバージョンの2つのレイアウトファイルを作成することです。古いmy_file.xmlファイルを削除する必要があります

my_file.xml
my_file.xml(v21)
0
Bond James