TL; DR、「パッケージRが存在しない」というエラーが発生した場合、考えられる理由は次のとおりです。
- XMLリソースファイルの
エラー-> XMLエラーを修正
- 現在のパッケージはパッケージとは異なり
Rます(package
AndroidManifest.xmlの属性を参照)
->インポートRクラス(例:import com.example.android.R;
->)、またはソースで適切なパッケージを使用(例:package com.example.android;
->)、または適切な場合はAndroidManifest.xml のパッケージ属性をに
変更します<manifest xmlns:android="..." package="com.example.android" ...>
- 使用された
RIDはシステムリソースからのものです
->インポートしませんandroid.Rが、問題のあるID の前にを付け
ますandroid.。たとえば、IDをプレフィックスする代わりにandroid.R.layout.simple_list_item_2
インポートandroid.Rすることはできますが、アプリケーションRクラスをインポートすることはできず、アプリケーションIDの前に付ける必要があります。com.example.android.R.id.main_menu。
R クラスは、アプリケーションのリソースから自動的に生成されます。これには、idこれらのリソースのが含まれて<manifest>
おり、対応するAndroidManifest.xmlファイルのタグで指定されたパッケージに含まれてい
ます。
リソースXMLファイルにエラーがない場合、R.javaソースは以下のパッケージサブディレクトリに生成され、gen/コンパイルされます。
パッケージR内に別のクラスがありandroidます。このandroid.Rクラスにはいくつかのネストされたクラスが含まれておりid、システムリソースのsおよびその他の値が含まれています。
Javaでクラスを使用するには、パッケージ全体でクラスに名前を付ける必要があります。例:
java.util.List<Object> list = new java.util.ArrayList<Object>();
またはクラスをインポートして、パッケージなしで使用する
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
現在のクラスと使用されているクラスの両方が同じパッケージにある場合は、パッケージに名前を付けずにクラスを使用することもできます。たとえば、
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}