gpt4 book ai didi

android - FindViewById 在子类中使用时为空

转载 作者:行者123 更新时间:2023-11-30 04:44:20 26 4
gpt4 key购买 nike

我正在使用一个从 main 扩展到设置一些按钮的子类。我能够更改在 main 中创建的变量,例如从子项中创建的 TotalMoney。

问题是 findViewById 给出了空指针异常。 buildthem() 中的代码在主类中使用时工作正常。

我正在使用 setContentView(R.layout.main);从主的 OnCreate 中。 Child 类在主类中从 OnResume 实例化和调用。

我是否也需要在子类中设置 ContentView,或者以某种方式从主类传递内容 View ?

package com.chewyapps.markettrader;

class child extends main {

void buildthem(){

TotalMoney = TotalMoney + 9999;


Button MenuButton = (Button) findViewById(R.id.Menu);
//etc

}
}

我在 Oncreate 中找不到 ViewById,因为完整代码将使用

         for(i=0; i<buttonIDs.length; i++) {                
Button b = (Button) findViewById(buttonIDs[i]);
//do other stuff
}

与每个按钮相关的其他事情需要 for 循环。如果我能使基本示例正常工作,尽管我认为完整的代码可以正常工作。

我之前没有想到要提到这个,但是子类位于一个名为 child.java 的单独文件中,来 self 在 onResume 中的 main.java 文件,我使用:

child childObject = new child ();
childObject.buildthem();

最佳答案

为什么不放这一行:

Button MenuButton = (Button) findViewById(R.id.Menu);

onCreate() 中,然后您可以将 MenuButton 作为参数传递给 buildthem() 或直接引用它,具体取决于您的设计。

请注意,Java 惯例是让变量名以小写字母开头,因此 menuButton 而不是 MenuButton

编辑
那么为什么不在 onCreate() 中创建一个 Button 数组,您以后可以对其进行迭代?

Button myButtons[] = new Button[buttonIDs.length];
for(int i=0; i<buttonIDs.length; i++) {
myButtons[i] = (Button) findViewById(buttonIDs[i]);
}

然后只需遍历子类中的 myButtons 数组即可。

关于android - FindViewById 在子类中使用时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340939/

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