嵌套视图不呈现

时间:2012-06-20 09:25:09

标签: android view nested

这个网站的新用户很抱歉,如果这个问题不合适,或者在错误的部分。

Android:

我编写了一个自定义按钮类,它扩展了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]);
    }

它遍历数组数字板,为每个'行'分配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]);
    }

正如您所看到的,代码中的唯一差异是适应每个特定代码段的上下文。谁能告诉我哪里出错了?

1 个答案:

答案 0 :(得分:0)

我猜错误的原因是您使用layout中定义的onCreate()变量。您需要将rows数组传递给主要活动,然后可以将其添加到布局中。