Ссылка на файл XML не является членом файла R - PullRequest
1 голос
/ 23 мая 2010

Как я мог классифицировать макет в R другого XML-файла?

Это должно быть автоматическим, так как у меня были новые ресурсы для отдыха, но это не так. Кто-то знает, что я сделал не так?

Я открываю действие, и теперь я хочу открыть другое действие, которое будет работать с другим XML пример. У меня есть меню и main.xml. Теперь я хочу перейти к другой игре под названием gamescreen, используя этот метод:

newGameButton.setOnClickListener(new OnClickListener() {

            public void onClick(View view) {
                Intent i = = new Intent(this, gameScreen.class);
                startActivity(i);
            }

}

Я хочу перейти на другую «страницу» к другой активности, называемой gameScreen, которая должна быть связана с XML-файлом, называемым gameScreen.xml.

Но в своем onCreate:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gameScreen);

}

и gameScreen не является членом файла R.

Основная проблема заключается в том, что при добавлении ресурса в макет, например, newxmlfile.xml файл R не выполняет никакой работы и остается в этом состоянии.

public static final class layout {
    public static final int main=0x7f030000;
}where it should have been:
public static final class layout {
    public static final int main=0x7f030000;
    public static final int newxmlfile=0x7f031000;
}

Ответы [ 5 ]

0 голосов
/ 24 мая 2010

Я нашел ответ. Каким-то образом Eclipse сделал

 import Android.R;

, что вызвало неоднозначность для переменной R.

0 голосов
/ 23 мая 2010

В Eclipse: menu-project-clean-выберите ваш проект.

Если нет, проверьте, что gameScreen.xml находится в папке раскладки res.

0 голосов
/ 23 мая 2010

Вы должны добавить новое действие в AndroidManifest.xml:

...
<activity 
    android:name=".gameScreen">
</activity>

Редактировать:
Предполагается, что gameScreen - это имя класса нового действия.Кроме того, насколько я понимаю, gameScreen - это файл XML, расположенный в res / layout.
Имя файла gameScreen.xml должно быть в нижнем регистре: gamescreen.xml.

0 голосов
/ 23 мая 2010

Используйте команду aapt (exe присутствует на платформах / / tools / aapt) для генерации файла R:

aapt package -f -M $ {manifest.file} -F $ {packaged.resource.file} -I $ {path.to.android-jar.library} -S $ {android-resource-directory} [ -m -J $ {folder.to.output.the.R.java}]

Будет сгенерирован новый файл R.java. Если будет какая-либо ошибка, это также покажет вам.

0 голосов
/ 23 мая 2010

Если ваш файл существует в папке res/layout, и, возможно, вы находитесь в другом пакете, вы должны импортировать ссылку на R и удалить любую ссылку на android.R

import com.mypkg.R;

Также не забудьте добавить класс gameScreen в файл манифеста как действие.

EDIT

Вам следует заново создать файл XML с помощью мастера и убедиться, что все в порядке. Сравните с некоторыми примерами, расположенными в каталоге установки /samples/ SDK.

...