web-dev-qa-db-ja.com

「IDを解決できないか、フィールドではありません」エラー

このエラーが引き続き発生します。 idをフィールドにするだけですか?

私のコードは:

public void onCreate(Bundle icicle) 
{
    super.onCreate(icicle);
    setContentView(R.layout.main);
    ImageView mainimage = (ImageView) findViewById(R.id.mainanim);
    mainimage.setBackgroundResource(R.anim.mainanim);
    mainanimation = (AnimationDrawable) mainimage.getBackground();
}

これをどのくらい正確に修正しますか?

26
Mia

Rクラスを変更しないでください。このエラーは、XMLレイアウトに構文上の問題があり、Rを自動生成できないことを意味します。そこを見て、よくわからないXMLコードがある場合は投稿してください。

編集:また、ファイルの先頭のインポートから「import Android.R」を削除します(ある場合)

44
Andy Zhang

上部のimportステートメントを見てください。 import Android.R、それから問題があります。これらの「R」エラーはトリッキーになる可能性があるため、それだけではないかもしれませんが、間違いなく少なくとも問題の一部であることは間違いありません。

それでも解決しない場合は、Eclipseプラグイン(ADT)およびAndroid SDKが完全に最新であることを確認し、OSから手動で削除してエミュレーター/電話からプロジェクトを削除します。 、そしてプロジェクトをクリーンアップします(Eclipseを起動->プロジェクト->クリーン...)。あなたの物が完全に最新のものであることを確認するために愚かに聞こえますが、ADTとSDKの以前のバージョンには、関連する迷惑なバグがたくさんありますその後クリアされたRファイル。

ちなみに、Rクラスに表示されるものは、プロジェクトres(aka resources)フォルダーにあるものから生成されます。 Rクラスを使用すると、あらゆる場所でファイル操作を行うことなく、リソース(画像や文字列など)を参照できます。それは他のこともしますが、それは別の答えです。 Android OSは同様のスキームを使用します-リソースフォルダーがあり、クラスAndroid.RがAndroid resourcesフォルダーにあるものにアクセスする方法です。問題単一のクラスで独自のリソースと標準のAndroidリソースの両方を使用している場合に発生します。通常、最上部でimportと言ってから、名前の最後のビット(たとえば、import Java.util.Listは、クラスにListと書くだけで、コンパイラはJava.util.List)。自動生成されたRクラスの場合のように、同じ名前の2つのクラスを使用する必要がある場合、それらの1つをインポートし、それを意味する場合はいつでももう1つを完全に修飾する必要があります。通常、プロジェクトのRファイルをインポートし、Androidリソースが必要なときにAndroid.R.whateverを指定します。

また、Andyを繰り返すために、Rファイルを自動的に変更しないでください。それはそれが使用されることを意味する方法ではありません。

50
Hamy

1つの可能な解決策:-

概要:使用していることを確認してくださいimport com.yourpkgdomainname.yourpkgappname.R の代わりに import Android.R

詳細:レイアウトXMLファイルの他の場所で参照されていたラベルのIDを変更すると、問題が発生しました。このエラーのため、Rファイルは最初に生成を停止しました。 Eclipseは、レイアウトファイルでのエラー処理が悪いです。

ID参照を修正したとき(プロジェクトを数回クリーンアップし、Eclipseを再起動すると、インポートパッケージが次のようになりました。
import Android.R

次のように変更すると、エラーが修正されました。
import com.example.app.R

29
Doc

レイアウトフォルダーを右クリックして、[検証]オプションをクリックするという問題を修正しました。いくつかのウィンドウが表示されますが、クリックしても問題ありません。

6
Saraceni

レイアウトディレクトリの新しいxmlファイルを作成した可能性があります。そのファイル名には、レイアウトディレクトリのxmlファイルでは許可されていない大文字が含まれています。

この助けを願っています。

5
arun

Jakeが述べたように、問題はコードのコピー/貼り付けが原因である可能性があります。 res/layoutの下のmain.xmlを確認します。その中にidフィールドがない場合、問題があります。典型的な例は次のようになります

<com.androidplot.xy.XYPlot
Android:id="@+id/mySimpleXYPlot"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:layout_marginTop="10px"
Android:layout_marginLeft="20px"
Android:layout_marginRight="20px"
title="A Simple Example"
/>
3
Ashwin

これをそこに捨てるだけで、手動で再入力してみてください。同じように見えるが引用符ではない類似したユニコード文字があるため、引用符が「間違った」ものである可能性があります。

コードスニペットをWebサイトからコピー/貼り付けした場合、それが問題である可能性があります。

3
Jake

Eclipseが同じディレクトリ内の他のプロジェクトと混同する場合があります。

パッケージ名を変更するだけで(Androidマニフェストファイルでも変更することを忘れないでください)、パッケージ名がディレクトリで既に使用されていないことを確認してください。

3
Senthil

これに出会ったばかりです。

最後に、私の問題は、大文字を含む.pngファイルにあり、まったく同じ問題を引き起こしたことがわかりました。 Eclipseを閉じて、Eclipseを再び開くまで、Eclipseがファイルにフラグを立てることはありませんでした。

2
Don

Rが自動的に生成されるように、プロジェクトをクリーンアップしてください。これは私のために働いた。

2
kiran boghra

問題のように思えますが、誰かが疑問に思っている場合に備えて修正しました-他のエラーのため、私は自動的にビルドをオフにしました。新しいプロジェクトを作成したとき、R.layout.mainに問題があり、Rをインポートする必要があると言いました;当然のことながら、私は初心者でした。それから私は手動で構築し、メインに問題がありました。プログラムをそのままビルドしてみて、インポートRを削除すれば問題ありません。

2
skiracr39

また、Javaクラスで作業していたときに、このエラーが発生しました。問題は、XMLファイルとその参照が保存されていないことです。両方のxmlファイルがある場合およびJavaクラスがタブで開いている場合、タブ内のxmlファイル名に*が付いていないことを確認してください。

お役に立てれば。

2
Landan Peters

main.xml(またはアイテムが定義されている場所)で、RアイテムのIDが@+id/...で定義されていることを確認してください。ボタンの例を次に示します。

<Button Android:text="B1" Android:id="@+id/button_one"
        Android:layout_gravity="center_horizontal|center"
        Android:layout_height="fill_parent" Android:layout_width="wrap_content" />

これらはそれぞれ重要です。

  • @は文字列の前になければなりません
  • +は、存在しない場合は作成することを示します(アイテムが何であれ)
2
Heidi H.

それは私に十分な痛みを与えましたが、解決策を見つけました:

PROJECT ---> Clean ----> (Sele)
2
Xaheen

この問題はありましたが、私の場合はEclipseを再起動することで解決しました。

1

[プロジェクト]タブを選択し、[自動的にビルド]をクリックして、[すべてビルド]オプションをアクティブにし、[すべてビルド]をクリックします。XMLファイル名は常に小文字で開始します。

0
raman rayat

私にとってこの問題の原因は、drawable-hdpiフォルダーに同じ名前の画像が2つあったことです。私がそれを解決したら、R.Javaはそれ自体を再構築し、問題は自動的に解決されました。

0
user2533630