& ldquo; не удается разрешить символ R & rdquo; в Android Studio

Что я делаю вместо добавления и удаления прослушивателей действий, у меня есть логическая переменная в моих обработчиках действий, которая истинна, если она должна разрешить действие через или false, если оно должно заблокировать его.

Затем я устанавливаю его в false, когда я делаю некоторые изменения, которые срабатывают при прослушивании действий

JComboBox test = new JComboBox();
test.addActionListener(new ActionListener()
{
  @Override
  public void actionPerformed(ActionEvent e)
  {
    if(testActionListenerActive)
    {
      //runn your stuff here
    }
  }
});

//then when i want to update something where i want to ignore all action evetns:
testActionListenerActive = false;
//do stuff here like add 

SwingUtilities.invokeLater(() -> testActionListenerActive = false);
//and now it is back enabled again
//The reason behind the invoke later is so that if any event was popped onto the awt queue 
//it will not be processed and only events that where inserted after the enable 
//event will get processed.
694
задан Tim Castelijns 7 November 2018 в 08:36
поделиться

8 ответов

В приложении «Мгновенное приложение» неосновной функции вы можете позвонить R.id.fromFeatureOne и R.is.fromFeatureTwo. Таким образом, элементы из различных ресурсов относятся к одному источнику ресурсов .

Оба будут выделены как приемлемые, и вы даже можете перейти к источнику. Но сборка приведет к ошибке: « не может найти символ R.id », что довольно сложно найти причину, так как ничего не выделено.

Решение состоит в том, чтобы позвонить com.example.feature.one.R.is.fromFeatureOne и com.example.feature.two.R.is.fromFeatureTwo.

Также выдает ошибку в Google: https://issuetracker.google.com/u/0/issues/77537714

.
1
ответ дан Zon 7 November 2018 в 08:36
поделиться

Постарайтесь убедиться, что полное имя пакета указано в первой строке. Скажем, у вас есть файл с именем LoginActivity.java и пакет с именем com.domainname.project.

Первая строка для LoginActivity.java должна быть

package com.domainname.project;

Это эквивалентно указанию «пространства имен» в dot.net. Также убедитесь, что пакет соответствует пакету, в котором содержится ваш файл * .java.

0
ответ дан Stephen Rauch 7 November 2018 в 08:36
поделиться

Я столкнулся с этой проблемой, когда вручную переименовал папку домена моего приложения. Чтобы решить эту проблему, мне пришлось

  1. установить правильную package структуру папок <manifest> в AndroidManifest.xml.
  2. Установите новое местоположение пакета для android:name из <activity> в AndroidManifest.xml.
  3. Очистить кэш с помощью

Меню «Файл» -> «Недействительные кэши / перезапуск ...»

Проблема исчезнет, ​​как только Android-студия перезапустится и создаст новый индекс.

9
ответ дан Sridhar 7 November 2018 в 08:36
поделиться

Файл R.java содержит ссылку между XML и страницей Java. «R не может быть решена» возникает только в том случае, если есть проблема с некоторыми из ваших файлов ресурсов. Таким образом, лучший и эффективный способ - удалить последний созданный файл XML или файл в формате res. и затем снова начать оттуда в соответствии с нормами кодирования Android. Это единственный способ. Эффективный и правильный путь.

Также используйте Git для правильного отслеживания кода. ..

15
ответ дан Zoe 7 November 2018 в 08:36
поделиться
  1. Проверьте ваши XML-файлы.
  2. Чистый проект.

Вот и все.

Например, у меня была запись в моем strings.xml:

<string name="A">Some text</string>

И в activity_main.xml я использовал эту строковую запись

<TextView
android:id="@+id/textViewA"
android:text="@string/A"/>

Пока я работал с проектом Я удалил это

 <string name="A">Some text</string>

И, следовательно, activity_main.xml стал недействительным. В результате: не могу разрешить R.

Итак, проверьте ваши *.xml файлы и очистите проект.

56
ответ дан Iurii 7 November 2018 в 08:36
поделиться

У меня недавно была эта проблема, и очистка / сборка и т. Д. Не решили ее. Я догадывался, что у меня где-то возникла проблема, но не был уверен, где ее можно найти (было ли это в манифесте, файлах ресурсов XML и т. Д.?).

Если что-то не так, вы можете узнать, что это такое, выполнив анализ кода.

В верхнем меню выберите:

Анализ -> Проверка кода, отсканируйте весь проект с использованием профиля «По умолчанию».

Результаты ваших проверок будут содержать элемент под названием «Android». Здесь вы получите список всего, что вызывает проблемы в ваших ресурсах и файле манифеста. Ошибки откроют сгенерированные xml-файлы из вашей сборки, которые будут отображать все ошибки красным цветом.

Моя точная проблема была вызвана тем, что я использовал файлы манифеста на основе ароматизатора и случайно скопировал некоторые разрешения внутри тега <application> в ароматизаторе.

Inspection

ОБНОВЛЕНИЕ: У меня возникла проблема после того, как Android Studio все еще показывала ошибку после исправления, хотя я могла теперь собирать и запускать прекрасно, пока ошибка все еще была. (Я управляю сборкой канареек, так что пока все сводится к этому)

11
ответ дан Matthew Cawley 7 November 2018 в 08:36
поделиться

В моем случае код работал правильно, прежде чем я обновил Android Studio. После обновления файл R не был сгенерирован. Я работал над пользовательским представлением и имел атрибут

<attr name="showText" format="boolean" />

в моем объявлении, доступном для стилизации. Этот же атрибут также использовался пользовательским интерфейсом системы:

<style name="Base.Widget.AppCompat.CompoundButton.Switch" parent="android:Widget.CompoundButton">
    <item name="track">@drawable/abc_switch_track_mtrl_alpha</item>
    <item name="android:thumb">@drawable/abc_switch_thumb_material</item>
    <item name="switchTextAppearance">@style/TextAppearance.AppCompat.Widget.Switch</item>
    <item name="android:background">?attr/selectableItemBackgroundBorderless</item>
    <item name="showText">false</item>// this line
</style>

Я переименовал предыдущий showText в showTextFormat , а затем синхронизировал градл, который восстановил файл R.java. .

2
ответ дан Illegal Argument 7 November 2018 в 08:36
поделиться

изменить последнюю версию SDK, которая была для меня подходящей.

1.Нажмите файл и затем щелкните структуру проекта. 2. Затем выберите «приложение», затем нажмите «ОК», это сработало для меня. enter image description here

4
ответ дан Than Htut 7 November 2018 в 08:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: