не восстановлен - PullRequest
       2

не восстановлен

2 голосов
/ 26 октября 2010

Я пытаюсь создать простой пример кнопки, но когда я добавляю этот код:

mButton = (Button) findViewById (R.id.button1);

он не будет обновлять мойR.id файл.Я перепробовал все, включая проверку автоматической сборки, очистку проекта и обновление SDK.Это происходит как в проектах 1.6, так и в 2.2.

Вот как выглядит полный код:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class NewTest extends Activity {

 Button myButton;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myButton = (Button) findViewById(R.id.button1);
    }
}

Ответы [ 6 ]

2 голосов
/ 26 октября 2010

Убедитесь, что у вас есть правильный импорт для класса R вашего приложения в вашей Деятельности:

import your.app.package.R;

ОБНОВЛЕНИЕ: этот неявный импорт необходим, только если ваш класс Activity не находится в корне пакета your.app.package.

2 голосов
/ 26 октября 2010

findViewById ищет в файле R.id местоположение, на которое вы ссылаетесь.

Ваш код не приведет к обновлению файла, поскольку он ищет только кнопку.

Созданиекнопка в вашем макете приведет к обновлению файла R.id.

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Button One"/>

Поскольку вы используете findViewById в контексте, а представление для текущего контекста - main.xml, приведенный выше пример кнопки потребуетнаходиться внутри файла main.xml.В противном случае, если бы у вас была другая кнопка с тем же именем в другом макете .xml, запись была бы сделана в вашем файле R.id, но ваш код дал бы вам исключение нулевого указателя, потому что кнопка не существует в том контексте, в котором вы находитесь.пытаясь сослаться на это от.

1 голос
/ 26 января 2014

Сохраните ваш проект перед использованием R.id.something

0 голосов
/ 08 января 2014

У меня была та же проблема с использованием API 19 с редактором макета, установленным на API 15, при попытке следовать учебному пособию NotePadV1. Я не смог получить R.id.text1 для компиляции из файла notes_row.xml.

Первоначально я только что вставил текст в XML-файл для генерации макета. После неудачной попытки удаления R и Clean, я попытался полностью удалить макет notes_row. Когда я воссоздал макет, я использовал графический интерфейс для добавления свойств объекта TextView, просто Id @ + id / text1, width и height. Потом я сделал Clean и скомпилировал. Это сработало.

0 голосов
/ 26 октября 2010

Он не будет обновлять сгенерированный файл R.java, когда вы просто ссылаетесь на существующий идентификатор.

Обновляется только тогда, когда вы добавляете ресурс.button01 уже должен существовать в одном из ваших XML-файлов, иначе ваш 'findViewById (R.id.button1)' не будет скомпилирован.

0 голосов
/ 26 октября 2010

Поскольку вы используете макет на основе XML, убедитесь, что у вас есть атрибут android: id в файле main.xml со значением @ @ id / button1 в качестве значения .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...