2012-06-20 88 views
2

新本网站很抱歉,如果这个问题是不恰当的,或在错误的部分。嵌套视图不是渲染

安卓

我写延伸查看和工作得很好,一个自定义按钮。现在我想创建一个数字小键盘类,它使用几个以特定方式排列的自定义按钮,然后可以在电话拨号器应用程序中使用这些按钮。我可以在应用程序的主要活动中构建键盘,并且看起来没问题,但是我想在自己的类中构建这个键盘以便重复使用。当我将代码移动到它自己的类中时,屏幕上出现错误或没有任何东西。我认为问题的一部分是子视图添加到哪个类。

这里是我的主要活动代码:

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]); 
    } 

正如你可以看到在代码的唯一不同之处,以适应每一个特定的代码块的情况下。谁能告诉我我要去哪里?

+0

你在哪里设置布局参数? – vrs

+0

我在新的LinearLayout()的声明中设置了它们,但是因为这不起作用,我将代码剥离为基本要素。我是否认为你不需要他们至少可以在显示器上看到什么?我敢肯定,我之前只使用了LinearLayout(上下文)... –

回答

0

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

+0

嗯......我试图在类内部尽可能保留嵌套布局。如果我在onCreate()方法中使用layout.addView(rows [i])会更好吗?很明显,我将不得不通过它行[]并再次循环... –

+0

原因是,我希望能够创建预定义的控件组,可以迅速放入其他应用程序而不会复杂化他们的活动代码 –

+0

然后在您自定义Numpad的构造函数中,传递要添加行的布局,以便您可以获取该类中的布局对象。 aaAAAaaah,听起来像只是票# – noob