正确使用其他类文件中的方法

时间:2014-03-19 13:17:52

标签: java android eclipse nullpointerexception

在尝试保持我的代码“整洁”的努力中,为了学习,我有一个包含七个类文件的应用程序(当前)。两个扩展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列出我的方法。但是,在尝试使用Logcat:NullPointerException错误运行Ga。方法时编译应用程序崩溃。

我还是Java / Android的新手,但是我的调试经验让我相信Ga变量不正确。

编辑:

Main.class

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();

Game.class

public class Game extends Activity {

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

2 个答案:

答案 0 :(得分:2)

变量名称不是问题。

让我们说你的宣言是 -

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

答案 1 :(得分:0)

如果Game是Activity类的子类,并且你试图从另一个activity(Main)调用它的方法 - 你做错了什么。 您可以将此方法声明为static,并将其命名为:Game.someStaticMethod();