Что я делаю вместо добавления и удаления прослушивателей действий, у меня есть логическая переменная в моих обработчиках действий, которая истинна, если она должна разрешить действие через или 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.
В приложении «Мгновенное приложение» неосновной функции вы можете позвонить 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
.Постарайтесь убедиться, что полное имя пакета указано в первой строке. Скажем, у вас есть файл с именем LoginActivity.java и пакет с именем com.domainname.project.
Первая строка для LoginActivity.java должна быть
package com.domainname.project;
Это эквивалентно указанию «пространства имен» в dot.net. Также убедитесь, что пакет соответствует пакету, в котором содержится ваш файл * .java.
Я столкнулся с этой проблемой, когда вручную переименовал папку домена моего приложения. Чтобы решить эту проблему, мне пришлось
package
структуру папок <manifest>
в AndroidManifest.xml
. android:name
из <activity>
в AndroidManifest.xml
. Меню «Файл» -> «Недействительные кэши / перезапуск ...»
Проблема исчезнет, как только Android-студия перезапустится и создаст новый индекс.
Файл R.java содержит ссылку между XML и страницей Java. «R не может быть решена» возникает только в том случае, если есть проблема с некоторыми из ваших файлов ресурсов. Таким образом, лучший и эффективный способ - удалить последний созданный файл XML или файл в формате res. и затем снова начать оттуда в соответствии с нормами кодирования Android. Это единственный способ. Эффективный и правильный путь.
Также используйте Git для правильного отслеживания кода. ..
Вот и все.
Например, у меня была запись в моем 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
файлы и очистите проект.
У меня недавно была эта проблема, и очистка / сборка и т. Д. Не решили ее. Я догадывался, что у меня где-то возникла проблема, но не был уверен, где ее можно найти (было ли это в манифесте, файлах ресурсов XML и т. Д.?).
Если что-то не так, вы можете узнать, что это такое, выполнив анализ кода.
В верхнем меню выберите:
Анализ -> Проверка кода, отсканируйте весь проект с использованием профиля «По умолчанию».
Результаты ваших проверок будут содержать элемент под названием «Android». Здесь вы получите список всего, что вызывает проблемы в ваших ресурсах и файле манифеста. Ошибки откроют сгенерированные xml-файлы из вашей сборки, которые будут отображать все ошибки красным цветом.
Моя точная проблема была вызвана тем, что я использовал файлы манифеста на основе ароматизатора и случайно скопировал некоторые разрешения внутри тега <application>
в ароматизаторе.
ОБНОВЛЕНИЕ: У меня возникла проблема после того, как Android Studio все еще показывала ошибку после исправления, хотя я могла теперь собирать и запускать прекрасно, пока ошибка все еще была. (Я управляю сборкой канареек, так что пока все сводится к этому)
В моем случае код работал правильно, прежде чем я обновил 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. .
изменить последнюю версию SDK, которая была для меня подходящей.
1.Нажмите файл и затем щелкните структуру проекта. 2. Затем выберите «приложение», затем нажмите «ОК», это сработало для меня.