ボタンのリソースIdの重複を避ける方法?

3,272 views
Skip to first unread message

Yoshi

unread,
Nov 15, 2011, 1:04:46 AM11/15/11
to android-g...@googlegroups.com
 基本的なことのような気もしますが、調べても答えが見つからなかったので質
問させてください。

 1つの画面にたくさんのボタンを配置し、一部はxmlで
android:id="@+id/button_a"
 みたいな感じでIdをセットし、一部はコードで
btn_1.setId(1);
 のように直接数値でセットした場合、xmlで自動的に割り振られたIdが偶然、
コードで指定したIdと重複してしまい、ボタンによって違う 動きをさせたい時
に上手く行かなくなるようなことは起こらないのでしょうか?

 起こる可能性があるなら、それを避けるにはどうするのが良いでしょうか?


 よし

noxi

unread,
Nov 15, 2011, 1:14:57 AM11/15/11
to android-g...@googlegroups.com
noxiです。


ID自体はレイアウトxml以外でも定義することができます。
Javaから定義済みIDを利用することで重複する可能性は無くなります。

http://developer.android.com/guide/topics/resources/more-resources.html#Id


2011年11月15日15:04 Yoshi <yosh...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

Yoshi

unread,
Nov 15, 2011, 2:06:51 AM11/15/11
to android-g...@googlegroups.com
noxiさん:

 早速ご返信いただき、ありがとうございます。

 通常は、示していただいたやり方で上手くできそうですが、例えば、データ・
ファイルから必要なボタンの数を読み出して、

for(i=0; i<num; i++)
{
  btn[i].setId(i);
}

 みたいなやり方で設定したい場合、ボタンの数の最大数のIdを用意しておい
て、1つずつ設定していくより仕方がないんでしょうか?(^^;


 よし

Taizo Nakatani

unread,
Nov 15, 2011, 3:02:14 AM11/15/11
to android-g...@googlegroups.com
noxiです。


Viewの識別方法はID以外にもTagを利用する方法があります。
setTagで任意のObjectをViewに関連付けることが出来ます。

2011年11月15日16:06 Yoshi <yosh...@gmail.com>:

Yoshi

unread,
Nov 15, 2011, 11:50:32 AM11/15/11
to android-g...@googlegroups.com
noxiさん:

 情報、ありがとうございました!


 ところで今回、リソースIdについて色々検索していて、「ADT14からR.id.○○がconstantでなくなったため、switch文のcaseとして使えなくなった」みたいな事になっているのを初めて知りました。(私の環境では、まだ使えてますが(^^;)
 という事もあり、今回は、xmlで定義したボタンにコードの方でIdを付け直す事にしました。それでswitch caseの問題にも対応できるはずだし。(^^;


 よし

noxi

unread,
Nov 15, 2011, 11:59:17 AM11/15/11
to android-g...@googlegroups.com
noxiです。


>  ところで今回、リソースIdについて色々検索していて、「ADT14からR.id.○○がconstantでなくなったため、switch文のcaseとして使えなくなった」みたいな事になっているのを初めて知りました。(私の環境では、まだ使えてますが(^^;)

自動生成されるR.javaがstatic finalからstaticになる話ですね。
これが適応されるのはライブラリプロジェクトに指定したプロジェクトのみです。
普通にアプリを作成する時は全く問題ありません。

将来的に他のアプリの一部として利用する予定がある場合はスイッチ文を避けて書きましょう。
捕捉までに。


2011年11月16日1:50 Yoshi <yosh...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages