添加视图数组会使 android 应用程序崩溃
Posted
技术标签:
【中文标题】添加视图数组会使 android 应用程序崩溃【英文标题】:Adding an array of views crashes an android app 【发布时间】:2012-10-21 01:18:52 【问题描述】:我这里有一个 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);
【问题讨论】:
【参考方案1】: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];
【讨论】:
【参考方案2】:-您已声明Array
,但没有初始化它。
例如:
page[] pages = new page[10]; // Tell that this is an Array of page of length 10
-您需要初始化它,
例如:
for (page p : pages)
p = new page();
-请使用Collection
,比如ArrayList
,而不是Array
,因为它比使用数组灵活得多。
- ArrayList
可以保存null
值,而与 Array
不同,它的大小可以增加。
ArrayList<page> p = new ArrayList<page>();
- 始终将class
、enum
、interface
的第一个字母设为大写。
例如:
应该不是page
而是Page
【讨论】:
以上是关于添加视图数组会使 android 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章