在尝试保持我的代码“整洁”的努力中,为了学习,我有一个包含七个类文件的应用程序(当前)。两个扩展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();
答案 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();