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();

   }

-配列を使用するよりもはるかに柔軟であるため、 の代わりにCollectionlikeを使用してください。ArrayListArray

-ArrayListを保持でき、 とは異なりサイズを大きくすることができます。null Array

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

-、、の最初の文字は必ず大文字classにします。enuminterface

例えば:

それはすべきではありません pageが、Page

于 2012-10-21T05:00:13.553 に答える