2010-03-21 14 views
16

Dodałem niektóre elementy interfejsu użytkownika do pliku main.xml w folderze res \ layout, a gdy próbuję uzyskać do nich dostęp poprzez wywołanie, R.layout.my_uielement, element interfejsu, który utworzyłem, jest nie tam. Nawet jeśli dodaję nowy plik XML z elementami interfejsu użytkownika, nadal nie będzie on wyświetlany w klasie R.layout. Sprawdziłem identyfikatory na nich i mają poprawny format (chyba): android:id="@+id/my_button". Jaki może być problem? Czy muszę najpierw skompilować kod?
UPDATE:
Próbowałem już adb kill-server następnie adb start-server. To nie pomaga. Próbowałem też R.id.my_uielement, również się nie rejestruje.Plik R.java nie aktualizuje się z identyfikatorem elementu interfejsu użytkownika

+4

Wypróbowałeś Clean Project w Eclipse? Czy pliki xml znajdują się we właściwym folderze? – Pentium10

+1

Tak, są one w folderze res \ layout. Clean Project też nie działa. –

+1

Uaktualnij wtyczki Eclipse ADT. Skopiuj źródło do nowego folderu i zaimportuj do nowego projektu. Spróbuj ponownie utworzyć plik XML, który posiadasz. W każdym razie opublikuj odpowiedź, jeśli się dowiesz. – Pentium10

Odpowiedz

35

To nie może być przypadek dla Ciebie, ale czasami kiedy używać coś z pakietu android.R (domyślnie android zasoby) i używam to w mojej klasie przed odniesieniem się do czegokolwiek z mojego własnego pakietu zasobów, Eclipse dodaje do mojego importu instrukcję import android.R;. Spowoduje to konflikt z domyślnym zachowaniem niejawnie wyglądającym w zasobach twojego pakietu.

Sprawdź swoje instrukcje importowania dla import Android.R;. Jeśli tam jest, usuń go. A jeśli używasz czegoś z Android.R, w pełni zakwalifikować go, gdy używasz go w kodzie.

+0

Genialny! Chciałbym dać ci 100 głosów w górę: D Tak długo szukałem odpowiedzi. Dzięki! – marienke

6

Zastosowanie R.id.your_ui_element nie R.layout.your_element

+0

To też nie działa. –

2

Zmierzyłem się również z tym problemem. R.java nie był ani generowany, ani aktualizowany.

Jeśli R.java nie jest wygenerowany podczas tworzenia projektu, uruchom swój "pusty" projekt. R.java z odniesieniami do zasobów zostanie wygenerowany automatycznie.

Jeśli R.java nie jest coraz aktualizowane, Sprawdź aktualizacje w Pomoc -> Sprawdź aktualizacje w Eclipse i zaktualizuj SDK i ADT w razie potrzeby.

+0

Pomogło mi to w połączeniu z projektem czyszczenia. –

+0

@ IgorG. Cieszę się, że pomogło. Spędziłem 2 dni zanim natknąłem się na to pytanie na stackoverflow – Pramod

9

Czysty projekt działa dobrze. W Eclipse, jeśli zmienisz tylko niektóre komponenty xml, nie zawsze generuje nowy plik R. Czyszczenie to robi.

+1

Tak działa, dzięki! – Signcodeindie

+1

Dziękuję Ci, że to zadziałało. – Wak

+0

Dzięki, to działało dla mnie. –

2

Po 2 dniach znalazłem sposób aby to naprawić ...

miałem zapisaną pół zrobić projekt w mojej poczty, więc kiedy R.java zniknął i po prostu zastąpić go ze starym R.java pliku, aby to naprawić wiele błędy, następnie wprowadzono niezbędne zmiany i zbudowałem projekt (zbudowałem go nie czysto) ... Nie wiem czy czyszczenie i kompilacja wykonuje tę samą pracę, czy nie .. ale za każdym razem czyściłem ją, R.java używano, aby przejść do niewidzialności ...

1

Zauważyłem, że mój plik R.java nie zawsze jest prawidłowo aktualizowany, gdy dodaję elementy do pliku strings.xml lub w innym miejscu. Jeśli użyję nowej wartości dodałem jak R.string.newString faktyczna wartość całkowita może nadal wskazywać na R.string.oldString lub cokolwiek (wydaje się, że zazwyczaj jest to element znajdujący się bezpośrednio nad lub pod nowym elementem w pliku strings.xml, ale Na razie nie udało mi się ustalić wzoru).

Nie należy modyfikować pliku R.java, ale nie mówi nic o usunięciu go (nie, że widziałem, w każdym razie). Zauważyłem, że usunięcie R.java zwykle rozwiązuje moje problemy związane z zasobami, ponieważ Eclipse natychmiast ponownie generuje plik z prawidłowo przypisanymi wartościami całkowitymi.

Uwaga, jestem bardzo początkujący w Eclipse, więc może nie rozumiem konsekwencji usunięcia R.javy, ale wydaje mi się, że działa dobrze dla mnie.Jeśli to, co robię, jest bardzo złe, proszę dać mi znać.

2

Clean pracuje ponieważ budować projektu po czyszczeniu. Problem polega więc (przynajmniej w moim przypadku, ponieważ kilka dni wcześniej wyłączyłem Automatyczną Konstrukcję), że po dodaniu elementu lub czegoś w pliku .xml, Eclipse go nie buduje i nie może odświeżyć R.java.

1

Żadna z nich nie zadziałała dla mnie! Jedyny sposób, że mogę uzyskać dostęp do @+id/foo jest przez myPackage.R.id.foo.

Powiązane problemy