gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:08:46 25 4
gpt4 key购买 nike

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

我添加了一个新类 (Designer.java) 以在其他 Activity 中重复使用我的页脚和页眉。

我将上下文作为参数传递给其他 Activity 。

  • rel2MainActivity 有 3 个 child
  • relMainActivity 为空

我不明白这是怎么回事。我一定是错过了什么

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() 中添加了 3 个 View ,但您没有将该 View 传递回被调用方。

因此,它将 null 赋给 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);

}

关于java - 在代码中创建布局并获取 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29469446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com