R не может быть разрешено переменной

Я хотел бы исправить эту ошибку

R не может быть разрешено переменной

Я искал много ответов, но я не мог найти правильный; Я все пробовал. Может ли кто-нибудь мне помочь?

Моя основная деятельность, которая автоматически создается. Ошибка отображается для трех строк, начинающихся с case R.id.button1::

package de.vogella.android.temprature1;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;

public class Convert extends Activity {
    private EditText text;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        text = (EditText) findViewById(R.id.editText1);
    }

    // This method is called at button click because we assigned the name to the
    // "On Click property" of the button
    public void myClickHandler(View view) {
    switch (view.getId()) {
        case R.id.button1:
            RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
            RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
            if (text.getText().length() == 0) {
                Toast.makeText(this, "Please enter a valid number",
                Toast.LENGTH_LONG).show();
                return;
            }

            float inputValue = Float.parseFloat(text.getText().toString());
            if (celsiusButton.isChecked()) {
                text.setText(String.valueOf(convertFahrenheitToCelsius(inputValue)));
            } else {
                text.setText(String.valueOf(convertCelsiusToFahrenheit(inputValue)));
            }

            // Switch to the other button
            if (fahrenheitButton.isChecked()) {
                fahrenheitButton.setChecked(false);
                celsiusButton.setChecked(true);
            } else {
                fahrenheitButton.setChecked(true);
                celsiusButton.setChecked(false);
            }
            break;
        }
    }

    // Converts to celsius
    private float convertFahrenheitToCelsius(float fahrenheit) {
        return ((fahrenheit - 32) * 5 / 9);
    }

    // Converts to fahrenheit
    private float convertCelsiusToFahrenheit(float celsius) {
        return ((celsius * 9) / 5) + 32;
    }
}

my main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="@color/myColor">
    <EditText android:layout_height="wrap_content" android:id="@+id/editText1"
        android:layout_width="match_parent" android:inputType="numberDecimal|numberSigned"></EditText>
    <RadioGroup android:layout_height="wrap_content" android:id="@+id/radioGroup1"
        android:layout_width="match_parent">
        <RadioButton android:layout_width="wrap_content"
            android:id="@+id/radio0" android:layout_height="wrap_content"
            android:text="@string/celsius" android:checked="true"></RadioButton>
        <RadioButton android:layout_width="wrap_content"
            android:id="@+id/radio1" android:layout_height="wrap_content"
            android:text="@string/fahrenheit"></RadioButton>
    </RadioGroup>
    <Button android:id="@+id/button1" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="@string/calc"
        android:onClick="myClickHandler"></Button>
</LinearLayout>

my string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Convert!</string>
    <string name="app_name">de.vogella.android.temprature1</string>
<string name="myClickHandler">myClickHandler</string>
<string name="celsius">to Celsius</string>
<string name="farenheit">to Farenheit</string>
<string name="calc">Calculate</string>
</resources>

Ответ 1

1) посмотрите, есть ли файлы xml в дереве проводника пакетов значок ошибки если они это сделают, исправить ошибки и сформировать R-класс.

пример подсказки: FILL_PARENT был переименован в MATCH_PARENT в API 8-го уровня; поэтому, если вы нацеливаете платформу 2.1 (api 7), измените все вхождения на "fill_parent"

2), если вы добавили "import android.R;" пытаясь сделать быстрое исправление, удалите эту строку

Ответ 2

для меня наилучшим решением предложить людям, которые имеют проблемы с файлом "R", было бы попытаться выполнить следующие шаги (порядок не имеет значения):

  • обновить ADT и SDK, Eclipse и Java (как версии 1.6, так и последней версии).

    EDIT: теперь ADT поддерживает Java 1.7. link здесь.

  • удалить папку gen и создать ее снова.

  • выполните чистый проект.

  • щелкните правой кнопкой мыши проект и выберите инструменты android-tools → fix-project-properties.

  • щелкните правой кнопкой мыши проект и выберите свойства → java-build-path → order-and-export. убедитесь, что порядок:

    • Android 4.4 (всегда самая последняя версия)

    • частные библиотеки Android

    • андроидные зависимости

    • проект вашей библиотеки /s при необходимости

    • yourAppProject/ген

    • yourAppProject/SRC

  • убедитесь, что все файлы в подпапках папки res имеют имена, которые соответствуют окну: только строчные буквы, цифры и символ подчеркивания ( "_" ).

  • всегда убедитесь, что targetSdk указывается на новейший API (в настоящее время 19), и установите его в файле project.properties

  • попробуйте запустить Lint и прочитать его предупреждения. они могут помочь вам.

  • убедитесь, что ваш проект скомпилирован на 1.6 java, а не в другой версии.

  • перезапустить eclipse.

Ответ 3

Проверьте файл AndroidManifest.xml, проверьте правильность имени пакета. Если вы скопировали пример, вероятно, это неправильно и источник вашей проблемы.

Ответ 4

У меня была та же проблема. У меня не было строк, указывающих "import something.R". Очистка и перестройка также не решают проблему.

Это оказалось из-за имени XML файла макета. Эти файлы могут содержать только строчные буквы, цифры или символы подчеркивания. Когда я изменил имя файла (и все, что относится к нему) с myLayout.xml на my_layout.xml, все сработало.

Ответ 5

Прежде чем попробовать что-нибудь еще, убедитесь, что объявление вашего пакета в файле AndroidManifest.xml соответствует фактическому имени пакета в вашей папке src проекта! Это вызвало эту ошибку много раз для меня при создании тестовых проектов, которые я копирую из существующих проектов. Надеюсь, это экономит ваше время!

Кроме того, создание XML файла с любыми заглавными буквами вызовет эту ошибку.

Ответ 6

У меня была эта проблема.

Это было вызвано тем, что у меня был избыточный ресурс меню, который ссылался на несуществующую строку.

Удалено меню XML и обратно. R.

Ответ 7

  • проверьте, есть ли файлы в папке res, какие-либо ошибки, затем
  • Щелкните правой кнопкой мыши по проекту → Инструменты Android → Исправить свойства проекта
  • Очистить проект

Ответ 8

Проверьте, совпадает ли имя пакета в файле AndroidManifest.xml с именем пакета вашего класса java.

Eg. AndroidManifest.xml

 package="com.example.de.vogella.android.widget.example"

В вашем классе MyWidgetProvider.java

package com.example.de.vogella.android.widget.example;

Это было причиной моей ошибки в этом примере.

Ответ 9

Если отсутствует R

  • Найдите файл R.java, он должен находиться в папке. /gen/
  • Если он отсутствует, а "build project" не создает его, один из ваших XML файлы имеют ошибки, исправляют их или даже удаляют, затем щелкните правой кнопкой мыши ваш проект и проект сборки кликов
  • Файл R.java должен быть сгенерирован

Ответ 10

Просто загляните в свои файлы заголовков:

import somefile.R;

Просто удалите эту строку и ее.

Ответ 11

У меня была эта проблема, и оказалось, что это произошло из-за ошибки в одном из моих XML файлов макета, которые я только что изменил

Ответ 12

Если проект Clean/Rebuild Project не работает, попробуйте проверить имя нашего пакета в AndroidManifest.xml.

Проблема "R не может быть решена" происходит при изменении имени пакета в файле AndroidManifest.xml. Он использует ваше имя пакета Android для создания подкаталога в каталоге "gen", где он хранит файл R.java.

Ответ 13

Ничего упомянутого выше не работало для меня. Однако я сам это исправил.

Решение:

Если у вас есть другие файлы, кроме activity_main.xml/main.xml внутри app_name/res/layout, удалите его и попробуйте выполнить очистку и сборку.

Примечание:

Нежелательные файлы или (скорее используемые позже) файлы внутри app_name/res/layout будут *.out.xml. Удалите то же самое.

Ответ 14

Эта ошибка связана с удалением файла R.java из папки проекта /gen. Если у вас есть резервная копия вашего проекта, перейдите в каталог проекта и вставьте R.java файл, который вы скопируете из раздела резервного копирования.

Коррумпированный файл R.java также может быть вызван ошибкой в ​​XML. Часто такие ошибки не отображаются в eclipse, поэтому я предлагаю взглянуть на ваши XML файлы. После этого вы также можете попробовать Clean ваш проект, перейдя в Project -> Clean... в строке меню.

Ответ 15

Все приведенные выше предложения должны работать нормально, если вы все еще сталкиваетесь с проблемой, я подозреваю, что вы используете 64-битную ОС, и ADT ищет 32-битные файлы.

попробуйте выполнить команду ниже в терминале и очистить проект один раз

sudo apt-get install ia32-libs

Ответ 16

У меня просто была эта ошибка в моем первом приветственном приложении Android для Android (3-ноя-2013).

Наряду с несколькими указателями от других пользователей, это то, что я должен был сделать:

Control + Shift + O

Удалить импорт *.R из верхней части основного файла активности .java

Сохраните файл, очистите и скомпилируйте проект (обычно сборка выполняется автоматически)

Запустите SDK Manager, включите инструменты сборки, если они еще не были проверены, и нажмите Update независимо

Закройте и снова закройте Eclipse, и проблема исчезла.

Ответ 17

  • Перестроить
  • Очистить (Меню → Проект → Очистить)
  • Удалить свой импорт. de.vogella.android.temprature1.R;

Ответ 18

Если вы еще этого не сделали, попробуйте очистить свой проект, как было предложено. В Eclipse Indigo это Project → Clean... → (убедитесь, что ваш проект отмечены) → OK. После этого щелкните правой кнопкой мыши по вашему проекту и выберите "Обновить".

Если это все еще проблема, несколько вопросов:

  • Вы недавно изменили имя пакета вашего приложения в AndroidManifest.xml?
  • Будет ли "активность" node в вашем AndroidManifest.xml, описывающем класс "Преобразовать", указать пакет/имя, которое не может быть разрешено естественным путем с вашим приложением? Например, если ваше приложение com.foo.bar, и ваша деятельность описывается как com.foobar.Convert, R. * не будет автоматически работать - вам нужно будет явно включить R для соответствующего пакета.

Ответ 19

Совет. Обновите SDK и все утилиты еще один раз. Это помогло мне.

Ответ 20

Sooo много разных возможных решений! Для меня я обнаружил, что Eclipse создал ошибочный файл в неправильном пакете. Я исправил его, переместив его в тот же пакет, что и файл R.java.

Ответ 21

Я видел много ответов, предлагающих "исправить ошибки в ваших XML файлах", но только дает общие советы и советы о том, как исправить XML.

Вот пример систематического поиска ошибок XML:

Посмотрите вкладку "Проблемы" в Eclipse. Игнорировать все "R не может быть разрешено переменной". Посмотрите, что осталось. Для меня это выглядит примерно так:

Unparsed aapt error(s)! Check the console for output.

Я цитирую из http://developer.android.com/tools/building/index.html#detailed-build:

Инструмент упаковки Android Asset (aapt) принимает ваше приложение файлы ресурсов, такие как файл AndroidManifest.xml и файлы XML для вашей деятельности, и компилирует их. R.java также производится так вы можете ссылаться на свои ресурсы с вашего Java-кода.

Теперь откройте вкладку "Консоль". Окно → Показать вид > Консоль

Это должно показать вам точную ошибку, в каком файле она произошла, и по какому номер строки:

[2014-05-13 08:27:05 - MyFirstApp] /Users/alain/code/experimental/android/adt_workspace4.4/MyFirstApp/res/menu/main_activity_actions.xml:4: error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/ic_action_search').
[2014-05-13 08:27:05 - MyFirstApp] /Users/alain/code/experimental/android/adt_workspace4.4/MyFirstApp/res/menu/main_activity_actions.xml:4: error: Error: No resource found that matches the given name (at 'title' with value '@string/action_search').

В моем случае первая ошибка связана с тем, что я ссылаюсь на ic_action_search, но я еще не установил ic_action_search.png в свои каталоги res/drawable- * dpi. Вторая ошибка связана с тем, что я ссылаюсь на строку "action_search", но я еще не определил ее в res/values ​​/strings.xml

Было бы неплохо, если бы плагин ADT фактически привел вас к строке и файлу, где ошибка, если вы нажмете на ошибку в выходе Console, но пока вы должны сделать это вручную.

Проблема с Eclipse заключается в том, что это не останавливает сборку при неудачном сбое, но продолжается до следующего этапа сборки, который является компилятором Java. У инструментов командной строки нет этой проблемы:

Чтобы сгенерировать build.xml:

$ android list targets

Для меня у меня есть:

Available Android targets:
----------
id: 1 or "android-16"
     Name: Android 4.1.2
     Type: Platform
     API level: 16
     Revision: 4
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
 Tag/ABIs : default/armeabi-v7a, default/mips, default/x86
----------
id: 2 or "android-19"
     Name: Android 4.4.2
     Type: Platform
     API level: 19
     Revision: 3
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
 Tag/ABIs : default/armeabi-v7a

Выберите цель из приведенного выше списка и используйте ее в следующей команде:

$ android update project --target <your_target_id> --path /path/to/android/project

Теперь, когда build.xml сгенерирован, вы можете создать свой проект, используя один из следующих:

$ ant debug
$ ant -verbose debug
$ ant -debug debug

Если сборка завершилась неудачно на этапе aapt, она корректно не генерирует R.java, но также корректно не переходит к этапу компилятора Java. Консольный вывод покажет вам (точно так же, как в представлении консоли Eclipse) имена файлов и номера строк, где ваши ошибки XML.

и вот как включить номера строк в Eclipse:

http://www.mkyong.com/eclipse/how-to-display-line-numbers-in-eclipse/

Preferences -> General -> Editors -> Text Editors -> [x] Show line numbers

Ответ 22

Простое решение:

Проверьте, есть ли в гене [сгенерированные файлы Java] в вашем пакете проектов файл R.java.

Если нет,

  • В xml файлах, которые вы добавили или изменили, есть некоторые ошибки. проверьте это глубоко. Исправьте все желтые оттенки и просмотрите журнал ошибок и консоль.
  • Проверьте, что ваши xml файлы должны быть маленькой буквой, "_" и цифрами.
  • Проверьте, что ваши имена изображений, которые вы добавили, также должны быть маленькой буквой, "_" и цифрами.
  • Очистите проект.
  • Проверить созданную R.java. если да, и все еще происходит ошибка, следуйте инструкциям yes ниже, а еще раз проверьте xmls

Если да,

  • замените "import android.R" на ваш пакет project.R ex: "com.mysmallapp.main.R" во всех файлах.
  • Очистить проект

Ответ 23

У меня была одна и та же проблема, и главная причина, по которой R.java не была сгенерирована повторно, - это ошибки в любом из файлов в проекте. Как только мы исправим те, которые должны получить R.java.

Ответ 24

У меня была та же проблема. Я исправлю это, удалив файл в директории 'gen', затем я очищаю проект, после чего автоматически генерируется R.java.

Ответ 25

Я новичок в разработке Android. У меня была такая же проблема, и я вращался вокруг этой темы около недели. Оказалось, что при загрузке последних Android SDK, таких как API 23, которые были недавно выпущены, или если вы обновляете инструменты сборки, вам необходимо изменить файл build.gradle в Gradle Scripts, если он не обновляется. Он находится в папке приложения вашего каталога Project. Вы можете открыть этот файл с помощью блокнота. Теперь мой файл выглядит так.

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "com.example.sukhwinder.justjava"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:23.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

Убедитесь, что compileSdkVersion, buildToolsVersion и targetSdkVersion соответствуют последней версии Android SDK и Build Tools, установленным на вашем компьютере.

Ответ 26

Я жил с этой проблемой в течение 2 недель, и сегодня я нахожу решение, которое "icrease (МИНИМАЛЬНЫЙ SDK ТРЕБУЕТСЯ) максимально возможно"

Ответ 27

Я делаю свои проекты в FlashBuilder 4.7, и он выражает строку в strings.xml:

< string name= "action_settings" > Настройки </string>

Как только я удалю его, я получил те же ошибки. Когда он вернулся, все снова работало.

Ответ 28

что это для меня...

когда я проверил файл свойств проекта (/project_root/project.properties), у него была ссылка на старую версию версии для Android, которую я больше не установил

# Project target.
target=android-15

как только я изменил это, чтобы сказать 17, он работал отлично, вскоре после сохранения файла мои ген-папки были построены и завышены.

# Project target.
target=android-17

Ответ 29

import com.de.vogella.android.temprature1.R;