2016-09-23 18 views
0

私はこれを解決する方法を見つけました。これは回答として投稿されますが、なぜ最初に起こったのかという疑問が生じます。Androidスタジオ:Design GUIで@ + idを追加するとエラーが発生する

私はデザインGUIを通じて新しいIDを追加しようとすると、私はボックスに名前を入力します。

id_sample 

とすぐに箱から出してI]タブとして、それは@+id/を付加:

@+id/id_sample 

documentationごとに新しいIDを追加するよう指示する必要があります。


しかし、私はJavaコードに行くとき、オートコンプリートは私のコード側のちんぷんかんぷんを与えている - ので、余分な@+id/の、オートコンプリートは私にあり

menu.findItem([email protected]+id/id_sample); 

の総計のための@+id/id_sampleを与えます無効な文字;それらを削除中:XMLは正しい名前に無効な文字が含まれていることを主張しているため

menu.findItem(R.id.id_sample); 

はエラーCannot resolve symbol 'id_sample'を与えます。キャッチ22.

IDを正しく参照するにはどうすればよいですか? XMLで探し

答えて

0

@+id/は実際に@+id/id_sampleを追加されます:

android:[email protected]+id/@+id/id_sample 

明らかにコンパイラに心臓発作を与えます。何が起こっていたのか分かりましたが、xmlにジャンプして余分なものを削除するのは簡単ですが(面倒ですが)、@+id/を削除することはできますが、最初に右に置く方法はありません。

これがxmlで修正されると、GUIで自動的に修正され、Javaコードに入るときにオートコンプリートによって正しい名前が与えられ、コンパイラはこれを認識します。

残っていることは、私がこれを引き起こしている間違っていることがあるかどうか疑問に思うことです。これは既知の(または不明な)バグですか?何が間違っているかを知って、それはXMLで修正することができますが、GUIは最初のところでそれを得ているはずです。右?

+0

これはありそうもありません。 R.idは静的Javaクラスであり、xmlファイルから生成するすべてのリソースIDはid内部クラスで宣言する必要があるためです。私はスタジオがこれを追加できないのは、有効な変数名ではありませんが、オートコンプリートリストにある可能性が高いからです。 –

関連する問題