注意:由于我发现自己的愚蠢,这个问题已经解决
我想向 a 添加一个自定义类LinearLayout,但由于某种原因,我不断得到一个NullPointerException.
这是处理加法的方法:
protected void onPostExecute(String results) {
        System.out.println("ON POST EXECUTE : " + results);
        try {
            if(!results.equals(((MessageBlurb)container.getChildAt(0)).getMessage())){
                try {
                    container.removeViewAt(30);
                    for (int i = 29; i > 0; i--) {
                        container.addView(container.getChildAt(i-1), i);
                        container.removeViewAt(i-1);
                    }
                    container.addView(new MessageBlurb(getApplicationContext(), results, Color.BLACK), 0);
                } catch (NullPointerException e) {
                    // TODO: handle exception
                }
            }
        }
        catch (Exception e) {
            MessageBlurb mb = new MessageBlurb(getApplicationContext(), results, Color.BLACK);
            mb.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
            System.out.println(mb);
            container.addView(mb, 0);
        }
    }
whereextends ,因为我有一个MessageBlurb里面的。ViewGroupTextViewMessageBlurb
该类MessageBlurb如下所示:
public MessageBlurb(Context context, String message, int color){
    super(context);
    myTV = new TextView(context);
    this.addView(myTV);
    myTV.setText(message);
    System.out.println("THE BLURB IS CREATED");
    this.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            System.out.println("YOU CLIKED THE BLURB");
        }
    });
}
我打印了 的描述mb,它给了我一个内存位置。除此之外,logcat 错误指向这一行:
container.addView(mb, 0);
它container本身是在文件LinearLayout中定义的。activity_main.xml它通过以下代码行初始化:
container = (LinearLayout)findViewById(R.id.container);
xml文件中Layout的id也称为container
有人可以看到我做错了什么吗?谢谢!