私は自分のアプリで作業していましたが、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;
を削除しましたが、今では正常に動作します。
Android.R
をインポートしないでください。それは自動的に生成され認識されるはずです。 この質問 インポートを削除した後にR
を参照する際にエラーが発生した場合、多くの役立つヒントが含まれています。
これらのエラーが表示される場合、インポートを削除した後のいくつかの基本的な手順:
[a-z0-9.]
で構成されていることを確認してください。何らかの理由で大文字や記号は使用できません。複数のフレーバー?を使用している場合
-リソースファイルが、フレーバーの1つだけとmainの両方で宣言/追加されていないことを確認します。
例:シンボル変数を含むa_layout_file.xml
ファイル
src:
flavor1/res/layout /(ファイルなし)
flavor2/res/layout/a_layout_file.xml
メイン/res/layout/a_layout_file.xml
この設定ではエラーが発生します:シンボル変数が見つかりません。これは、リソースファイルが両方のフレーバーにしか存在できないためですまたはメインのみ.
プロジェクトでString
build configフィールドを使用している場合、これが該当する可能性があります。
buildConfigField "String", "source", "play"
上記のように文字列を宣言すると、エラーが発生します。修正するには、次のように変更します。
buildConfigField "String", "source", "\"play\""
インポートされたRが別のモジュールからのものでないことを確認してください。クラスをモジュールからメインプロジェクトに移動しましたが、Rはモジュールからのものでした。
Android studioでプロジェクトを開き、ファイルをクリックし、[キャッシュの無効化/再起動]をクリックします
.ScanActivity
ファイルにMainActivity
とAndroidManifest.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>
変数がそれを参照しているメソッドのスコープ内にあることを確認してください。たとえば、クラス内のメソッドでtextviewをローカルで定義し、別のメソッドでそれを参照していました。
他のメソッドが定義にアクセスできるように、textview定義をメソッドの外側のクラス定義のすぐ下に移動して、問題を解決しました。
上記の@TouchBoarderの答えに代わるもう1つの方法は、同じ名前で異なるapiバージョンの2つのレイアウトファイルを作成することです。古いmy_file.xmlファイルを削除する必要があります
my_file.xml
my_file.xml(v21)