Java 在代码中创建布局并获取nullPointerException
我用纯代码创建布局。 它成功了,我决定创建另一个类来重用我的布局 我添加了一个新类(Designer.java),以便将页脚和页眉用于其他活动 我传递一个上下文作为其他活动的参数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
- rel2MainActivity有3个孩子
- RELMAIN活动为空
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);