Я уверен, что это что-то мертвое просто, так как это мое первое приложение для 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>
R
класс генерируется кодом для вас инструментами сборки Android при создании вашего проекта. Это означает, что есть четыре возможности:
Вы еще не пытались построить проект, и в этом случае попробуйте это.
Eclipse не думает, что ему нужно построить проект по какой-либо причине - попробуйте Project> Clean из меню Eclipse (только релевантно, если вы используете Eclipse, конечно).
В вашем манифесте или одном из ваших ресурсов есть некоторая ошибка, которая препятствует построению R
Для этого должны быть индикаторы ошибок Eclipse.
У вас нет атрибута android:id
в вашем макете, и поэтому нет доступного R.id
Я решил проблему, удалив папку bin и перекомпилировав ее с помощью приложения AIDE.
Для тех, кто использует AIDE, имея проблемы с идентификатором Id, попробуйте удалить папку "gen", расположенную в папке bin, и перекомпилировать. Проблема в том, что класс R.java не создал конструктор с именем Id. Таким образом, удаление папки gen, содержащей класс R.java, и повторная компиляция решают эту проблему.
Убедитесь, что файл xml, который вы вставили, называется main.xml и в папке макета. И попробуйте снова создать файл R. Это может помочь.
Вы должны добавить идентификатор для компонента в файле XML. Как это:
android:id="@+id/buton1"
Теперь вы можете нажать mainActivity.java и написать код "R.id". вы видите подсказку, чтобы написать "buton1" и нет ошибки "id"