Android Studio: Gradle: ошибка: не удается найти символьную переменную
Я работал над своим приложением, и все было нормально, пока я не попытался отобразить изображение в java.
Я запускал приложение один раз, и он работал нормально, изображение отображалось.
После этого он попросил меня импортировать некоторые библиотеки, и я их импортировал. После этого у меня появились ошибки для моих действий.
Ошибки вроде:
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;
и во второй Активности:
import android.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
Кто-нибудь знает, как это исправить?
EDIT: я удалил import android.R;
, и теперь он работает нормально.
Ответы
Ответ 1
Вам не следует импортировать android.R
. Это должно автоматически генерироваться и распознаваться. Этот вопрос содержит много полезных советов, если после удаления импорта вы получите сообщение об ошибке R
.
Некоторые основные шаги после удаления импорта, если появляются эти ошибки:
- Очистите свою сборку, а затем перестройте
- Убедитесь, что в ваших XML файлах нет ошибок или опечаток.
- Убедитесь, что ваши имена ресурсов состоят из
[a-z0-9.]
. Капители или символы по какой-либо причине не допускаются.
- Выполните синхронизацию Gradle (через Tools > Android > Sync Project с Gradle Files)
Ответ 2
Если вы используете несколько ароматов?
- убедитесь, что файл ресурсов не объявлен/добавлен как в одном из вариантов, а в основном.
Пример: a_layout_file.xml
файл, содержащий символьную переменную
ЦСИ:
flavor1/res/layout/(без файла)
flavor2/RES/макет/a_layout_file.xml
Основной/RES/макет/a_layout_file.xml
Эта настройка даст ошибку: не удается найти символьную переменную, потому что файл ресурсов может быть только в обоих вариантах или только в основном.
Ответ 3
Если вы используете поле конфигурации String
build в своем проекте, это может быть так:
buildConfigField "String", "source", "play"
Если вы объявите свою строку, как указано выше, это приведет к ошибке. Исправление состоит в том, чтобы изменить его на:
buildConfigField "String", "source", "\"play\""
Ответ 4
Убедитесь, что в AndroidManifest.xml
файл MainActivity
и .ScanActivity
:
<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>
Ответ 5
Убедитесь, что ваши переменные находятся в области метода, который ссылается на него. Например, я определил текстовое представление локально в методе в классе и ссылался на него другим методом.
Я переместил определение textview вне метода прямо под определением класса, чтобы другой метод смог получить доступ к определению, которое разрешило проблему.