Java 在代码中创建布局并获取nullPointerException

Java 在代码中创建布局并获取nullPointerException,java,android,layout,nullpointerexception,Java,Android,Layout,Nullpointerexception,我用纯代码创建布局。 它成功了,我决定创建另一个类来重用我的布局 我添加了一个新类(Designer.java),以便将页脚和页眉用于其他活动 我传递一个上下文作为其他活动的参数 rel2MainActivity有3个孩子 RELMAIN活动为空 我不明白怎么了。我一定错过了什么 MainActivity.java RelativeLayout relMainActivity ; @Override protected void onCreate(Bundle savedInstanceS

我用纯代码创建布局。 它成功了,我决定创建另一个类来重用我的布局

我添加了一个新类(Designer.java),以便将页脚和页眉用于其他活动

我传递一个上下文作为其他活动的参数

  • rel2MainActivity有3个孩子
  • RELMAIN活动为空
我不明白怎么了。我一定错过了什么

MainActivity.java

RelativeLayout relMainActivity ;

@Override
protected void onCreate(Bundle savedInstanceState) {

    // ...
    Designer design = new Designer();
    design.createDesign(relMainActivity, this);
    // relMainActivity = null in debug

    setContentView(relMainActivity);
    // java.lang.NullPointerException

}
Designer.java

RelativeLayout relHeader, relFooter, relContent;

public void createDesign(RelativeLayout rel2MainActivity, Context context) {

  rel2MainActivity = new RelativeLayout(context);
  // ...
  rel2MainActivity.addView(relHeader, 0);
  rel2MainActivity.addView(relContent, 1);
  rel2MainActivity.addView(relFooter, 2);
  // rel2MainActivity has 3 children in debug 

}

createDesign
方法中,直接使用
relMainActivity
,或者在调用
createDesign
方法之后,返回RelativeLayout的实例并将其分配给onCreate中的
relMainActivity

<

因此,它为
relMainActivity

解决方案:

当你打电话时:

    RelativeLayout relHeader, relFooter, relContent;

public RelativeLayout createDesign(RelativeLayout rel2MainActivity, Context context) {

  rel2MainActivity = new RelativeLayout(context);
  // ...
  rel2MainActivity.addView(relHeader, 0);
  rel2MainActivity.addView(relContent, 1);
  rel2MainActivity.addView(relFooter, 2);
  // rel2MainActivity has 3 children in debug 
   // rel2MainActivity view is local to this scope
   // you should return it
   return rel2MainActivity;


}
请访问:

RelativeLayout relMainActivity ;

@Override
protected void onCreate(Bundle savedInstanceState) {

    // ...
    Designer design = new Designer();
    relMainActivity = design.createDesign(relMainActivity, this);
    // relMainActivity = null in debug

    setContentView(relMainActivity);

}

文件变量
relMainActivity1
在这一行代码之后保持为空

design.createDesign(relMainActivity, this);
在中使用之前,应将代码更改为初始化
relMainActivity1

setContentView(relMainActivity);
i、 e

然后用它作为

relMainActivity= design.createDesign(relMainActivity, this);
setContentView(relMainActivity);

请张贴你的日志猫跟踪。你是对的。成功了,谢谢你。我以前做过,但我没有意识到错误消息是针对一个子视图的,该子视图也是空的:)
relMainActivity= design.createDesign(relMainActivity, this);
setContentView(relMainActivity);