如果这个问题不合适,或者在错误的部分中,这个网站的新手非常抱歉。
安卓:
我编写了一个自定义按钮类,它扩展了 View 并且工作得很好。现在我想创建一个数字键盘类,它使用以特定方式排列的几个自定义按钮,然后我可以在电话拨号器应用程序中使用它们。我可以从应用程序的主要活动中构建键盘,看起来还可以,但我想在它自己的类中构建这个键盘以便于重用。当我将代码移动到它自己的类中时,我会得到错误或屏幕上什么也没有。我认为问题的一部分是子视图被添加到哪个类。
这是我在主要活动中的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(1);
LcarsButton numericPad[] = new LcarsButton[10]; //array of buttons
LinearLayout rows[] = new LinearLayout[3];
for(int i=0;i<=2;i++)
{
rows[i] = new LinearLayout(this);
for(int j=1;j<=3;j++)
{
int k = (i * 3) + j;
numericPad[k] = new LcarsButton(this);
numericPad[k].label = "" + k;
rows[i].addView(numericPad[k]);
}
layout.addView(rows[i]);
}
它循环遍历数组 numericPad,将 3 个按钮分配给每个“行”,然后将 3 个“行”分配给“布局”。这工作正常。这是在类构造函数中看到的代码:
public class LcarsNumPad extends LinearLayout {
public LcarsNumPad(Context context) {
super(context);
this.setOrientation(VERTICAL);
LinearLayout layout = new LinearLayout(context);
LcarsButton numericPad[] = new LcarsButton[10];
layout.setOrientation(1);
LinearLayout rows[] = new LinearLayout[3];
for(int i=0;i<=2;i++)
{
rows[i] = new LinearLayout(context);
for(int j=1;j<=3;j++)
{
int k = (i * 3) + j;
numericPad[k] = new LcarsButton(context);
numericPad[k].label = "" + k;
rows[i].addView(numericPad[k]);
}
layout.addView(rows[i]);
}
如您所见,代码中的唯一区别是适应每个特定代码段的上下文。谁能告诉我哪里出错了?