Начинающий Android, почему «id» - это «Неизвестный участник» с R.id?

1

Я уверен, что это что-то мертвое просто, так как это мое первое приложение для Android с кодом (пример hello world, который я сделал, просто присваивал значение строке в XML). Моя проблема заключается в попытке получить ссылку на мою кнопку в моей переменной, тогда идентификатор, как и в R.id, не определен?

Ошибка компилятора находится в комментарии в коде ниже, где это происходит:

package com.geeksonhugs.simplecalc;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;

public class MainActivity extends Activity
{
    private Button AddButton;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        AddButton = (Button)findViewById(R.id.btnAdd);
//"Unknown member 'id' of 'com.geeksonhugs.simplecalc.R'"

        //AddButton.setOnClickListener(this);

    }   

}

Файл макета XML:

<?xml version='1.0' encoding='utf-8' ?>
<LinearLayout 
        xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LayoutRoot" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical">

<TextView 
    android:id="@+id/txtFirstNum" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="@string/strFirstNum" />

<EditText 
    android:id="@+id/edtFirstNum" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="" />

<TextView 
    android:id="@+id/txtSecondNum" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="@string/strSecondNum" />

<EditText 
    android:id="@+id/edtSecondNum" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="" />

<Button 
    android:id="@+id/btnAdd" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="@string/strAdd" 
    android:gravity="center" />

<TextView 
    android:id="@+id/txtResult" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="" />

</LinearLayout>
  • 0
    Вы еще не создали этот проект, верно? Если это так, вы должны построить его в первую очередь.
  • 0
    Используете ли вы пакеты внутри пакетов или библиотечные проекты?
Показать ещё 5 комментариев
Теги:

5 ответов

1
Лучший ответ

R класс генерируется кодом для вас инструментами сборки Android при создании вашего проекта. Это означает, что есть четыре возможности:

  1. Вы еще не пытались построить проект, и в этом случае попробуйте это.

  2. Eclipse не думает, что ему нужно построить проект по какой-либо причине - попробуйте Project> Clean из меню Eclipse (только релевантно, если вы используете Eclipse, конечно).

  3. В вашем манифесте или одном из ваших ресурсов есть некоторая ошибка, которая препятствует построению R Для этого должны быть индикаторы ошибок Eclipse.

  4. У вас нет атрибута android:id в вашем макете, и поэтому нет доступного R.id

  • 1
    Это, видимо, ошибка в IDE, которую я использую. Я использую AIDE - приложение для Android. Я запустил опцию «Обновить анализ кода», и он сказал, что ошибок нет. Когда я выбираю кнопку «Обновить сборку», она все равно сообщает об ошибке (а также, если я пытаюсь «запустить» ее). У меня есть другая IDE на моем устройстве, называемая Terminal IDE (которая по сути является полной средой командной строки Linux), и она скомпилирована нормально. Извините, спасибо за вашу помощь. В следующий раз я попробую IDE командной строки, прежде чем задать вопрос, чтобы устранить проблему IDE.
2

Я решил проблему, удалив папку bin и перекомпилировав ее с помощью приложения AIDE.

1

Для тех, кто использует AIDE, имея проблемы с идентификатором Id, попробуйте удалить папку "gen", расположенную в папке bin, и перекомпилировать. Проблема в том, что класс R.java не создал конструктор с именем Id. Таким образом, удаление папки gen, содержащей класс R.java, и повторная компиляция решают эту проблему.

1

Убедитесь, что файл xml, который вы вставили, называется main.xml и в папке макета. И попробуйте снова создать файл R. Это может помочь.

  • 0
    Это, видимо, ошибка в IDE, которую я использую. Я использую AIDE - приложение для Android. Я запустил опцию «Обновить анализ кода», и он сказал, что ошибок нет. Когда я выбираю кнопку «Обновить сборку», она все равно сообщает об ошибке (а также, если я пытаюсь «запустить» ее). У меня есть другая IDE на моем устройстве, называемая Terminal IDE (которая по сути является полной средой командной строки Linux), и она скомпилирована нормально. Извините, спасибо за вашу помощь. В следующий раз я попробую IDE командной строки, прежде чем задать вопрос, чтобы устранить проблему IDE.
  • 0
    Не переживай приятель. Говоря об IDE, я использую Intellij. Я верю, что есть версия Linux. Если хочешь, можешь попробовать.
Показать ещё 1 комментарий
0

Вы должны добавить идентификатор для компонента в файле XML. Как это:

android:id="@+id/buton1"

Теперь вы можете нажать mainActivity.java и написать код "R.id". вы видите подсказку, чтобы написать "buton1" и нет ошибки "id"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню