ошибка затмения с android: идентификатор не может быть разрешен или не является полем - PullRequest
4 голосов
/ 24 декабря 2010

Я только начал играть с разработкой Android, и уже с попыткой сделать кнопку я столкнулся с проблемой. Ошибка, которую я привел в следующем коде, прямо на «R.id.button1». Он говорит, что идентификатор не может быть разрешен или не является полем. Нужно ли вручную ссылаться на каждый объект, который я делаю в XML-файле макета? Я обнаружил, что это сработало, но, похоже, это немного для каждой кнопки, которую я хочу сделать ...

package com.example.helloandroid;

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


public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */

 private Button button1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener()
        {
         public void onClick(View v)
         {
          finish();          
         }        
        });
    }
}

Ответы [ 9 ]

9 голосов
/ 17 сентября 2011

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

Просто попробуйте это: сохраните ваш проект, закройте Eclipse и затем снова откройте его.Так просто.

3 голосов
/ 24 декабря 2010

Нужно ли вручную ссылаться на каждый отдельный объект, который я создаю в XML-файле макета

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

<View
    android:id="@+id/the_id"/>

И затем из своего кода вы можете ссылаться на него, используя класс R.В этом примере можно ввести R.id.the_id, а затем Ctrl + Shift + O , чтобы Eclipse автоматически импортировал необходимые файлы.

Вы можете ускорить свою производительность, используя такие инфраструктуры, как Roboguice ;Я думаю, что это для ленивых людей.

2 голосов
/ 12 сентября 2013

Этот ответ не применим к этому вопросу (глядя на код, который вы предоставили).Просто добавьте его, если кто-то здесь оступится, и вышеупомянутые ответы не помогут.

Если очистка (Project -> clean) не помогает или сохранение и перезапуск затмения тоже не помогают, проверьте следующеенеправильный импорт.

import android.R;

Какой Eclipse иногда по ошибке добавляется при автоимпорте (Ctrl + Shift + O).Удалите эту строку (импорт), и все готово: D

1 голос
/ 11 октября 2012

После этого ОТЛИЧНОГО урока я столкнулся с той же проблемой.Прочитав ответ Кармелло ( 17 сентября 2011 г. 07:23 ), я просто щелкнул Файл-> Сохранить все, и вуаля, «button0» был определен автоматически и даже выделен синтаксис.

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

Делайте эти вещи, все это поможет вам

  1. Проект -> Очистить, щелкните правой кнопкой мыши -> Исправить свойства проекта
  2. Перезапустите Eclipse
  3. сделайте несколькофальшивое изменение в манифесте и сохранение
  4. проверьте консоль на наличие сообщения об ошибке
  5. проверьте папку для рисования, убедитесь, что имена изображений соответствуют правилам
0 голосов
/ 19 сентября 2013

R.id - это сгенерированный объект, который присваивает целые числа ресурсам.Попробуйте это перейти к вашему gen / mypackage / R.java и удалите файл.Как вы можете видеть, это воссоздано.Этот файл содержит статические ссылки, где в качестве контекста используется больше динамического состояния вашего приложения.Если у вас есть синтаксические ошибки, которые не позволят автоматически перегенерировать этот файл R.java, то вы получите много ошибок или ошибок R.Как и все остальные сказали, вы можете нажать сохранить все иконки или Ctrl + Shift + S на окнах.Вы можете очистить проект проекта / очистить, и это очистит 95% от этих исключений.Да, затмение глючит таким образом, но NetBeans не так хорошо поддерживает Android. эта ссылка может помочь

Удачи

0 голосов
/ 14 сентября 2013

Перейдите в файл «R.java» в папке «gen» и проверьте, присутствует ли ваш «button1» в классе «id». Если нет, то это может быть причиной того, что вы получили эту ошибку. Когда выиспользуйте оператор «R.id», чтобы убедиться, что он присутствует в соответствующем классе, в данном случае в классе «id».

0 голосов
/ 25 августа 2013

Я пока что сталкивался с теми же проблемами. Плз, не забудьте определить следующее:

<View
android:id="@+id/button1" />

если вы используете идентификатор в своем классе .java.

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

При этом идентификатор, определенный в xml-файле, должен совпадать с идентификатором в findViewById ().

0 голосов
/ 24 декабря 2010

Если «R.id.button1» не определено, вы получите ошибку компиляции, как вы видели. Если вы не определите это в макете, он не будет определен.

Вам не нужно указывать каждый объект, который вы создаете в макете, но вы делаете это, если пытаетесь ссылаться на него из "R. *" Вы можете вручную создавать кнопки и другие объекты, которые не указаны в макете.

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