R.id не может быть решена - PullRequest
4 голосов
/ 02 июня 2011

Я думаю, что-то должно быть сделано с файлом Android-Manifest.xml или что-то в папке макета. Я новичок в Android, поэтому не знаю, что мне написать.

public class AndroidPong extends Activity implements  OnClickListener {
    static String tag;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super .onCreate(savedInstanceState);

        tag = getResources().getString(R.string.app_name);
        fullScreen();
        splashScreen();
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        // TODO Auto-generated method stub
        return super .onCreateDialog(id);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        return super .onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        return super .onOptionsItemSelected(item);
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super .onStop();
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super .onDestroy();
    }

    void startGame() {
        setContentView(R.layout.game);// error
        this .findViewById(R.id.Button01).setOnClickListener(this );//error
        this .findViewById(R.id.Button02).setOnClickListener(this );//Error
    }

    void splashScreen() {
        setContentView(R.layout.splash);// error
        this .findViewById(R.id.pongtable).setOnClickListener(this );//error
    }

    void gameMenu() {

    }

    void fullScreen() {
        this .requestWindowFeature(Window.FEATURE_NO_TITLE);
        this .getWindow().setFlags(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    public static void debug(String debug) {
        Log.d(tag, debug);
    }


<?xml version="1.0" encoding="utf-8"?>
<absoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">

<Button android:id="@+id/Button01"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"

<Button android:id="+id/Button02"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
 </absoluteLayout>

Ответы [ 5 ]

3 голосов
/ 02 июня 2011

Похоже, у вас есть два разных типа ошибок.Сначала я опишу тот, на который вы ссылаетесь, в заголовке вашего вопроса.Это связано с идентификатором ресурса.

R.id Не удается устранить

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

Сначала убедитесь, что вы используете правильные имена для ссылки на ваш идентификатор ресурса.Например, у вас есть R.id.Button01.Если вы используете это для ссылки на идентификатор res кнопки, убедитесь, что ваша кнопка в XML имеет атрибут android:id="@+id/Button01"

Во-вторых, убедитесь, что в файле макета XML нет ошибок.Если есть другие ошибки, чем часто, Eclipse (я предполагаю, что вы используете Eclipse) не распознает, что идентификатор ресурса для этого элемента был создан.

Если вы не видите очевидную ошибку, такую ​​какэто, затем попытайтесь очистить вашу сборку.Сделайте это, перейдя в Project -> Clean ...

Другие ошибки связаны с вашими OnClickListeners

this .findViewById(R.id.Button01).setOnClickListener(this );//error
this .findViewById(R.id.Button02).setOnClickListener(this );//Error

и

this .findViewById(R.id.pongtable).setOnClickListener(this );//error

Эта ошибка большепростой.Вы неправильно настраиваете прослушиватели кликов.Метод setOnClickListener принимает OnClickListener в качестве аргумента.Если вы хотите установить новый, вам нужно будет передать новый OnClickListener, который вы создаете.Вы можете сделать это так ...

this.someButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
             // whatever the button will do             
        }
    });
3 голосов
/ 02 июня 2011

Если вы используете eclipse, этот вопрос уже был задан

R не может быть решен - ошибка Android

2 голосов
/ 08 августа 2011

Я столкнулся с этой проблемой и сегодня.Я проверил все вышеперечисленные ответы, но ничего не получалось.Мне показалось, что файл R.java не восстанавливался должным образом (даже после команды Project / Clean).Для моего проекта не было создано ни одного класса "R.id".

Мне наконец-то удалось решить эту проблему с помощью представления Graphical Layout в файле макета main.xmlВкладка «Графический макет» в левом нижнем углу окна редактора для main.xml).

Я перетащил фиктивное поле в макет (в котором был идентификатор) и сохранил его.Бам!Теперь Eclipse генерирует класс R.id, как и ожидалось.Я удалил пустое поле из main.xml и все так, как должно быть.

1 голос
/ 08 марта 2013

У меня было два изображения, которые были названы в верхнем и нижнем регистре. Это работало нормально, и я использовал их в своем проекте. Я построил это несколько раз, и это никогда не заботилось. Внезапно по какой-то причине они ему больше не нравятся.

Это показало это в консоли:

res \ drawable-hdpi \ Image.png: Неверное имя файла: должно содержать только [А-z0-9 _.]

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

Примечание. В окне «Проблемы» вы также увидите ошибку, подобную этой:

Unparsed aapt error (s)! Проверьте консоль на выход.

0 голосов
/ 02 июня 2011

Некоторые хитрости:

Ранее вы могли использовать R.id, затем очистить проект и собрать его заново.Я не рекомендую собирать автоматически.

В свойствах проекта вы можете заказать папку / gen перед вашей папкой / src.Это приведет к тому, что папка gen будет скомпилирована первой, поэтому сначала будет сгенерирован R, и ваши изменения могут быть отражены.

Убедитесь, что у вас нет других ошибок компиляции.

...