有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正确使用来自其他类文件的方法

在努力保持代码“整洁”的过程中,为了学习,我有一个包含七个类文件的应用程序(目前)。两个扩展活动(Main.class和Game.class)。 我已经研究这个“问题”好几天了,我看到了很多不同的解决方案,但还没有找到一个有效的解决方案

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

(来自Main.class的代码)

public Game Ga = new Game();

public Game Ga;

两者都给出了相同的结果,我还尝试:

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

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

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

共 (2) 个答案

  1. # 1 楼答案

    变量名不是问题所在

    假设你的声明是——

    public Game Ga;
    

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

    float screenWidth = Ga.getScreenWidth();
    

    由于Ga从未被实例化过,上面的代码将为您提供NPE(NullPointerException)。但是,除非出现其他错误,否则以下操作应该有效,在这种情况下,您应该使用游戏类中的代码或您尝试调用的方法更新您的问题,并准确记录错误日志-

    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
    
  2. # 2 楼答案

    若游戏是一个活动类的子类,而您试图从另一个活动(Main)调用它的方法,那个么您就做错了。 您可以将此方法声明为静态,并像这样调用它:Game。someStaticMethod()