2011-12-30 22 views
14

Hi pracuję z gestów i trzeba importować, ale im się błądImport com.android.internal.R nie może zostać rozwiązany

com.android.internal.R; 

Import com.android.internal.R nie można rozwiązać

uprzejmie mi pomóc, proszę

+0

Skąd błąd podtrzymać? Czy zmieniłeś coś w konfiguracji projektu lub dodałeś nowe pliki ręcznie? Jeśli tak, spróbuj oczyścić projekt i zbuduj go ponownie. – Ahmed

Odpowiedz

3

Przede wszystkim, co jest gesty? Czy masz pakiet o nazwie com.android.internal w folderze gen? Czy to zawiera R.java? Jeśli nie, spróbuj Project-> Clean in Eclipse. Jeśli nadal nie działa, możesz mieć błąd w plikach układu XML.

36

Nie mówisz, dlaczego potrzebujesz dostępu do com.android.internal.R, ale smutny jest fakt, że po prostu nie możesz go zaimportować ("wewnętrzny" jest wskazówką, że nie jest częścią publicznego interfejsu API). Google nie ujawnia tego, ponieważ może ulec zmianie.

Możliwe jest uzyskanie dostępu do zasobów wewnętrznych przez wywołanie Resources.getSystem(). Aby uzyskać wartość danego identyfikatora zasobów, trzeba znać jego nazwę, a następnie użyć kodu jak poniżej, aby znaleźć wartość:

Resources res = Resources.getSystem(); 
int id = res.getIdentifier("resource name", "resource type", "android"); 

zdawać sobie sprawę, że każda nazwa używanie może zniknąć w przyszłych wersjach Androida .

+0

Dziękuję za odpowiedź! Jak mogę uzyskać identyfikator zasobu tego elementu? '' ' ' '' – nAkhmedov

+0

@nAkhmedov - Twoje pytanie jest niejasne. To, co pokazałeś, to definicja zasobu 'id', którą możesz określić jako' R.id.switch_widget' w kodzie. Czy jest coś jeszcze, co masz na myśli? –

5

Mam kilka sugestii:

1) upewnij się, że nie ma żadnych innych błędów innych niż błędów związanych R. Kliknij prawym przyciskiem myszy folder projektu w Eclipse, Narzędzia Android -> Napraw właściwości projektu.

2) Sprawdź, czy zaimportowano prawidłowy R. Czasami można zaimportować domyślny Android.R.

4

Tak, możesz użyć wewnętrznego R z brudną sztuczką (brudna sztuczka = odbicie Java).

Wystarczy przykład:

Class clasz = Class.forName("com.android.internal.R$styleable") 
Field field = clasz.getDeclaredField("TextAppearance"); 
field.setAccessible(true); 
int[] textAppearanceStyleArr = (int[])field.get(null); 

field = clasz.getDeclaredField("TextAppearance_textSize"); 
field.setAccessible(true); 
int textSizeStyle = (Integer)field.get(null); 
+0

Uzyskiwanie dostępu do wewnętrznych interfejsów API poprzez odbicie nie jest obsługiwane i może nie działać na wszystkich urządzeniach lub w przyszłości! –

Powiązane problemy