代码:
Button b = new Button(this);
b.setText(m.group());
RelativeLayout.LayoutParams lP = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
int iDELETE_AFTER_TEST_ID;
if(bLast != null){
/*
* Add a new move button
*/
iId = bLast.getId();
lP.addRule(RelativeLayout.RIGHT_OF, iId);
bLast = b;
bLast.setId(iId + 1);
iDELETE_AFTER_TEST_ID = iId + 1;
}else{
/*
* Add the first of the move buttons
*/
bLast = b;
bLast.setId(R.id.base_button_arrangement_id);
lP.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
iDELETE_AFTER_TEST_ID = R.id.base_button_arrangement_id;
}
b.setLayoutParams(lP);
b.setPadding(20, 10, 20, 50);
Log.d(TAG, " going to add = " + b.getId() + " class = " + b.getClass());
rl.addView(b);
mNumberofMoveOptions++;
View v = findViewById(iDELETE_AFTER_TEST_ID);
if(v != null){
if(v.getClass() == Button.class){
Log.d(TAG, " id = " + b.getId() + " class = " + b.getClass());
}else{
Log.e(TAG, "Corruption has occured - not button type: " +
iDELETE_AFTER_TEST_ID + " class: " + v.getClass());
}
}else{
Log.e(TAG, "Corruption has occured - view is null: " + iDELETE_AFTER_TEST_ID);
}
调试:
要添加= 2130968581 class = class android.widget.Button
已发生腐败 - 不是按钮类型:2130968581类:类android.widget.TextView
问题:
因此即使调试清楚地显示小部件被创建为Button,当我直接查询它之后它已被转换或更改为TextView。我是否错误地查询,或者ID被回收还是其他事情发生了?
我在创建之后创建的按钮完全正常工作,并且创建为Button小部件类型并保留。
非常感谢您提前提供任何帮助。
答案 0 :(得分:0)
原因似乎是ID的种子是由工具生成的Id驱动的。
使用用户定义的Id似乎解决了这个问题以及我遇到的其他一些随机问题,这些问题最初似乎并不相关,但实际上是。