Android 嵌套视图不进行渲染

Android 嵌套视图不进行渲染,android,view,nested,Android,View,Nested,如果这个问题不合适,或者在错误的部分,对此网站非常抱歉 安卓: 我已经编写了一个自定义按钮类,它扩展了视图,工作得很好。现在,我想创建一个数字键盘类,它使用一些以特定方式排列的自定义按钮,然后我可以在电话拨号器应用程序中使用这些按钮。我可以从应用程序的主要活动中构建小键盘,看起来还可以,但我想在自己的类中构建小键盘,以便于重复使用。当我将代码移动到它自己的类中时,屏幕上要么出现错误,要么什么都没有。我认为部分问题在于子视图被添加到了什么类中 以下是我在主要活动中的代码: public void

如果这个问题不合适,或者在错误的部分,对此网站非常抱歉

安卓:

我已经编写了一个自定义按钮类,它扩展了视图,工作得很好。现在,我想创建一个数字键盘类,它使用一些以特定方式排列的自定义按钮,然后我可以在电话拨号器应用程序中使用这些按钮。我可以从应用程序的主要活动中构建小键盘,看起来还可以,但我想在自己的类中构建小键盘,以便于重复使用。当我将代码移动到它自己的类中时,屏幕上要么出现错误,要么什么都没有。我认为部分问题在于子视图被添加到了什么类中

以下是我在主要活动中的代码:

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]);
    }
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
LinearLayout布局=新的LinearLayout(本);
布局。设置方向(1);
LcarsButton numericPad[]=新LcarsButton[10];//按钮数组
LinearLayout行[]=新的LinearLayout[3];

对于(int i=0;i我猜错误的原因是您使用了
layout
变量,该变量在
onCreate()中定义
。您需要将
数组传递给主活动,然后从主活动将其添加到布局中。

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

在哪里设置布局参数?我在新LinearLayout()的声明中设置了布局参数但由于这不起作用,我将代码简化为基本内容。我认为您至少不需要它们来在显示器上显示一些内容,对吗?我肯定我以前只使用过LinearLayout(上下文)…您在哪里设置布局参数?我在新LinearLayout()的声明中设置了它们但是,由于这不起作用,我将代码简化为基本内容。我认为您至少不需要它们来显示某些内容,对吗?我确信我以前只使用了LinearLayout(上下文)…嗯…如果可能的话,我会尝试将嵌套布局保留在类中。如果我使用layout.addView(rows[I]),会更好吗在onCreate()方法中?显然,我必须将其传递到行[]再次循环…原因是我希望能够创建预定义的控件组,这些控件组可以快速放入其他应用程序中,而不会使它们的活动代码复杂化。然后在自定义Numpad的构造函数中,将布局传递到要添加行的位置,以便可以在该类中获取布局对象.aaaaaaaaah听起来像是罚单!所以类似于…公共类LcarsNumPad扩展了LinearLayout{public LcarsNumPad(上下文,布局布局){…Layout.addView(rows[i]);太棒了!刚刚尝试过,这似乎已经成功了:)谢谢,CreatorHmm…如果可能的话,我正在尝试将嵌套布局保留在类中。如果我在onCreate()方法中执行layout.addView(rows[I]),会更好吗?显然,我必须将其传递到rows[]再次循环…原因是我希望能够创建预定义的控件组,这些控件组可以快速放入其他应用程序中,而不会使它们的活动代码复杂化。然后在自定义Numpad的构造函数中,将布局传递到要添加行的位置,以便可以在该类中获取布局对象.aaaaaaaaaaah听起来像是罚单!所以类似于…公共类LcarsNumPad扩展了LinearLayout{public LcarsNumPad(上下文上下文,布局布局){…Layout.addView(rows[i]);太棒了!刚刚尝试过,这似乎成功了:)谢谢,创建者
    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]);
    }