Я работаю над переносом приложения Java Maze на Android. Это означает, что я беру код Java, данный мне (я не писал эту часть), переписывая некоторые из классов (например, меняя графику Java на графику Android, чтобы она работала на Android, и я создаю активность в Android UI (который я закончил)NullPointerException при переносе игры на Android
Когда я запускаю свою программу, я получаю NullPointerException, говорящее о следующей строке является причиной, за исключением:.
maze.newMaze(root, cells, dists, startx, starty);
Это ошибка:
01-19 19:22:53.157: E/AndroidRuntime(638): FATAL EXCEPTION: Thread-79
01-19 19:22:53.157: E/AndroidRuntime(638): java.lang.NullPointerException
01-19 19:22:53.157: E/AndroidRuntime(638): at falstad.MazeBuilder.run(MazeBuilder.java:729)
01-19 19:22:53.157: E/AndroidRuntime(638): at java.lang.Thread.run(Thread.java:856)
Ошибка ошибки в MazeBuil der, и я понял, что «лабиринт» имеет значение null и параметры действительны. Я также выяснил, что лабиринт установлен в null в методе сборки Mazebuilder ... который проходит через объект Maze и устанавливает maze = mz (лабиринт).
Так я нахожу в Maze.java где называется mazebuilder.build (...), и это в методе maze.build() в нижней части с «этим» в качестве параметра:
/**
* Method obtains a new Mazebuilder and has it compute new maze,
* it is only used in keyDown()
* @param skill level determines the width, height and number of rooms for the new maze
*/
private void build(int skill) {
// switch screen
state = STATE_GENERATING;
redraw();
// select generation method
switch(method){
case 1 : mazebuilder = new MazeBuilderPrim(); // generate with Prim's algorithm
break ;
case 0: // generate with Falstad's original algorithm (0 and default), note the missing break statement
default : mazebuilder = new MazeBuilder();
break ;
}
// adjust settings and launch generation in a separate thread
mazew = skill_x[skill];
mazeh = skill_y[skill];
int roomcount = skill_rooms[skill];
mazebuilder.build(this, mazew, mazeh, roomcount, skill_partct[skill]);
// mazebuilder calls back by calling newMaze() to return newly generated maze
}
Чтение этого говорит мне, что параметр «this» имеет значение NULL. Я прочитал о «этой» функции в java и не понимаю ее, поэтому я не уверен, почему она равна нулю. Я также предполагаю, часть проблемы заключается в том, что, поскольку у меня есть
mazebuilder = new MazeBuilder()
и не
mazebuilder = new MazeBuilder(this)
При попытке добавления «этот параметр» (как выше строки кода), это у меня коды ответчика о конструктор MazeBuilder (Maze) не определен. Но моя GenerationActivity GA отличается от лабиринта Maze ... так что я не могу создать конструктор, который устанавливает GA = лабиринт ... Я в замешательстве.
Снова, я очень ценю любую помощь и терпение. Это был кошмар для новичка.
попробовать проходящие GeneratingActivity.this – seaplain
' это' * никогда * null. Никогда, никогда. Я гарантирую это. – Eric
Возможно ли, что вы передаете «null» для любого из параметров «cells, dists, startx, starty». Например, 'startx' является' int', но код передает целое число, которое равно null. В результате распаковки будет получено исключение NullPointerException – JScoobyCed