2017-01-17 53 views
2

我要动态地创建4个按钮,我要动态地生成自己的ID,是这样的:动态设置视图的ID

for(int i = 1; i <= 4; i++){ 
    Button button = new Button(activity); 

    // i need something here to turn this string into an int;  
    button.setId("button" + i) 
    } 

我知道如何动态地获取现有视图的id:

getResources().getIdentifier("button2", "button", getPackageName()) 

我不知道的是如何动态生成id。

我在网上看了一下,但没有找到任何东西。

我需要这样的东西:

int id = getResources().setIdentifier("button2", "button", getPackageName()); 
button.setid(id); 

预先感谢您。

+0

'setId(int)'传递整数值作为参数 –

+1

为什么要调用'setId()'?你有这些'Button'的引用,那么你需要这些ID用于什么? – pskink

+2

只需使用'.setTag(字符串值)'玩。它更有用 –

回答

3

使用,则可以只使用View.setId(int)这一点。根据文档id不需要在树状图中是唯一的,您可以使用任何(正数)整数代替Views

医生说

标识符不必在此视图的层次结构独特。标识符应该是一个正数。

,如果你想连接与View你可以标记对象的某些其他信息,查看使用setTag(),并通过findViewWithTag("obj");

期待看到更多关于这里创建一个ID https://stackoverflow.com/a/13241629/5235032

1

1,价值观文件夹中创建XML,

2,<resources> <item type="id" name="button1">123</item> </resources>

3,在Java代码中button.setId(R.id.button1);

2

一个更好的做法是使用在API 17中引入的button.setId(View.generateViewId())