gpt4 book ai didi

java - 正确使用附加类文件中的方法

转载 作者:行者123 更新时间:2023-12-02 06:03:15 25 4
gpt4 key购买 nike

为了努力保持我的代码“整洁”,并且为了学习,我有一个包含七个类文件的应用程序(当前)。两个扩展了 Activity(Main.class 和 Game.class)。我已经研究这个“问题”几天了,并看到了我认为有很多不同的解决方案,但还没有一个能够发挥作用。

我的问题是:如何使用另一个类中的方法而不从以下代码中收到 NullPointerException 错误?

(来自 Main.class 的代码)

public Game Ga = new Game();

public Game Ga;

两者给出相同的结果,我也尝试过:

public Game Ga = ((Game)getApplicationContext());

我的问题是我使用 Eclipse 并且能够开始编写 Ga。 然后 Eclipse 将找到 Game.class 文件并列出 Game.class 中的方法。但是,一旦编译,应用程序就会在尝试运行 Ga. 方法时崩溃,并出现 Logcat: NullPointerException 错误。

我对 Java/Android 还很陌生,但我的调试经验让我相信 Ga 变量不正确。

编辑:

主类

public class Main extends Activity {

public Game Ga;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// for testing
setContentView(R.layout.main);
playerOne = 1;
aiRandom();
Ga.gameNew();

游戏.类

public class Game extends Activity {

public void gameNew() {
gameReset();
fight();

最佳答案

变量名称不是问题。

假设您的声明是 -

public Game Ga;

此时Ga默认为null。它没有被实例化。因此,如果您的 Game 类有一个名为 getScreenWidth 的方法,该方法返回一个浮点值,并且您可以在声明 Ga 的位置访问它,并尝试 -

float screenWidth = Ga.getScreenWidth();

上面的代码会给你 NPE (NullPointerException),因为 Ga 从未被实例化。但是,除非出现其他问题,否则以下内容应该有效,在这种情况下,您应该使用 Game 类中的代码或您尝试调用的方法以及准确的错误日志来更新您的问题 -

Game Ga = new Game();
float screenWidth = Ga.getScreenWidth();

更新

当您显示一些代码时,您没有实例化您的Ga。在 onCreate 方法中实例化它 -

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Ga = new Game();

...the rest of your code..
}

改变-

public class Game extends Activity

致-

public class Game

关于java - 正确使用附加类文件中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507104/

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