3

我这里有一个 android 应用程序的某些部分,它无缘无故地崩溃了。

RL0 恰好是一些在 XML 中定义的 LinearLayout,它已经包含了一些其他不相关的东西。老实说,我大部分时间都在使用 C++,所以我最初可能不太了解为什么有些事情在 android 中做的显着不同,但我正在努力。有关如何修复该崩溃的任何帮助?错误消息指出 NullPointerException。谢谢。

public class Osteoporoza extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_osteoporoza);
        LinearLayout RL0=(LinearLayout)findViewById(R.id.RL0);        

        page[] pages=new page[10];
        RL0.addView(pages[0].pageLL0);//doesn't crash without this line, yet i need to have some way of adding n objects that follow a pattern, i.e. a class.

class page
{
    public LinearLayout pageLL0;
        public ScrollView pageUpperScroll1;
            public TextView pageTextView2;
        public ScrollView pageLowerScroll1;
            public LinearLayout pageAnswerButtonLL2;
                public Button AnswerButton3_1;
                public Button AnswerButton3_2;
                public Button AnswerButton3_3;
                public Button AnswerButton3_4;

    page()
    {
        pageAnswerButtonLL2.addView(AnswerButton3_1);
        pageAnswerButtonLL2.addView(AnswerButton3_2);
        pageAnswerButtonLL2.addView(AnswerButton3_3);
        pageAnswerButtonLL2.addView(AnswerButton3_4);

        pageLowerScroll1.addView(pageAnswerButtonLL2);
        pageUpperScroll1.addView(pageTextView2);

        pageLL0.addView(pageUpperScroll1);
        pageLL0.addView(pageLowerScroll1);
    }
}
4

2 回答 2

4

Object数组中的所有元素都是null默认的。

即当你创建数组时:

page[] pages = new page[10];

您只是设置数组的大小,而不是在数组本身中设置任何实例,因此每个元素都是null. 要实例化您需要使用的每个元素:

for (int i=0; i < pages.length; i++) {
   pages[i] = new page();
}

注意 Java 命名约定表明类名以大写字母开头,例如

Page[] pages = new Page[10];
于 2012-10-21T01:24:52.380 回答
0

-你已经声明Array没有初始化它。

例如:

page[] pages = new page[10]; // Tell that this is an Array of page of length 10

-需要初始化它,

例如:

for (page p : pages){

       p = new page();

   }

-请使用CollectionlikeArrayList代替Array,因为它比使用 Array 灵活得多。

- ArrayList可以保存null值,与不同 Array的是,它的大小可以增加

ArrayList<page> p = new ArrayList<page>();

-始终将 , 的第一个字母作为大写字母classenuminterface

例如:

应该page但是Page

于 2012-10-21T05:00:13.553 回答