TL; DR , "paket R yok" hatasını alırsanız olası nedenler
- XML kaynak dosyalarında bazı hatalar
-> XML hatalarını düzelt
- mevcut paket paketten farklıdır
R( package
AndroidManifest.xml'deki özniteliğe bakın )
-> import Rsınıfı, örn. import com.example.android.R;
-> veya kaynağınızda uygun paketi kullanın, örn. package com.example.android;
-> veya AndroidManifest.xml'deki paket özelliğini,
<manifest xmlns:android="..." package="com.example.android" ...>uygunsa olarak değiştirin
- kullanılan
Rkimlikler sistem kaynaklarındandır
-> içe aktarmayın, ancak sorun teşkil eden kimlikleri önek olarak ekleyin; örneğin, android.Rkimliklerin önekini koymak yerine
içe aktarabilirsiniz , ancak daha sonra uygulama sınıfını artık içe aktaramazsınız ve uygulama kimliklerinin önüne eklemeniz gerekir, ör. .android.android.R.layout.simple_list_item_2
android.RRcom.example.android.R.id.main_menu
R Sınıf uygulamanın kaynaklardan otomatik olarak oluşturulur. Bu idkaynakların 'lerini içerir <manifest>
ve ilgili AndroidManifest.xmldosyadaki etikette adı verilen pakette bulunur
.
Kaynak XML dosyalarında hata yoksa, R.javakaynak aşağıdaki paket alt dizininde oluşturulacak gen/ve derlenecektir.
Pakette Rbulunan başka bir sınıf var android. Bu android.Rsınıf, sırayla sistem kaynakları idiçin s ve diğer değerleri içeren bazı iç içe geçmiş sınıfları içerir .
Java'da bir sınıfı kullanmak için, sınıfı tüm paketle adlandırmanız gerekir, örn.
java.util.List<Object> list = new java.util.ArrayList<Object>();
veya sınıfı içe aktarın ve ardından paket olmadan kullanın
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
Hem geçerli sınıf hem de kullanılan sınıf aynı paketteyse, paketi adlandırmadan da bir sınıfı kullanabilirsiniz, örn.
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}