【问题标题】:Android Emulator is Force ClosingAndroid 模拟器正在强制关闭
【发布时间】:2011-07-02 17:44:41
【问题描述】:

每次尝试运行我的程序时,我的 Android 模拟器都会强制退出。我不知道为什么,请帮助我!

public class AsteroidsToo extends Activity {
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     new AsteroidWorld(3).bigBang(this);
    }

}

这里是 LogCat 错误:

07-02 17:27:54.873: WARN/dalvikvm(332): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
07-02 17:27:54.893: ERROR/AndroidRuntime(332): FATAL EXCEPTION: main
07-02 17:27:54.893: ERROR/AndroidRuntime(332): java.lang.RuntimeException: Unable to start activity ComponentInfo{foo.AsteroidsToo/foo.AsteroidsToo.AsteroidsToo}: java.lang.NullPointerException
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.os.Looper.loop(Looper.java:123)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.app.ActivityThread.main(ActivityThread.java:4627)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at java.lang.reflect.Method.invokeNative(Native Method)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at java.lang.reflect.Method.invoke(Method.java:521)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at dalvik.system.NativeStart.main(Native Method)
07-02 17:27:54.893: ERROR/AndroidRuntime(332): Caused by: java.lang.NullPointerException
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at java.util.Hashtable.put(Hashtable.java:369)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.image.FromFile.<init>(FromFile.java:25)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at foo.AsteroidsToo.Ship.<init>(AsteroidsToo.java:75)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at foo.AsteroidsToo.AsteroidWorld.<init>(AsteroidsToo.java:196)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at foo.AsteroidsToo.AsteroidsToo.onCreate(AsteroidsToo.java:13)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-02 17:27:54.893: ERROR/AndroidRuntime(332):     ... 11 more
07-02 17:27:54.923: WARN/ActivityManager(59):   Force finishing activity foo.AsteroidsToo/.AsteroidsToo
07-02 17:27:55.433: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{45053848 foo.AsteroidsToo/.AsteroidsToo}
07-02 17:28:03.173: WARN/InputManagerService(59): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44f2b9d8
07-02 17:28:06.287: WARN/ActivityManager(59): Activity destroy timeout for HistoryRecord{45053848 foo.AsteroidsToo/.AsteroidsToo}

这是我的构造函数的代码:

/**Represents the World*/
class AsteroidWorld extends VoidWorld{
    Ship sh;
    ArrayList<Bullet> b;
    ArrayList<Asteroids> a;
    int score;
    int HighScore;
    State state;
    int lives;
    double timer;

    public AsteroidWorld(int lives) {
        super();
        this.sh = new Ship(300.0,300.0,0.0,0.0,90.0);
        this.b = new ArrayList<Bullet>();
        this.a = new ArrayList<Asteroids>();
        this.score = 0;
        this.HighScore = 0;
        this.timer = 3.0;
        this.state = new Lose();
        this.lives = lives;

我也收到一条错误消息:

[2011-07-02 20:08:08 - 模拟器] 2011-07-02 20:08:08.156 模拟器 [14734:903] 警告一次:这 应用程序或它使用的库是 使用 NSQuickDrawView,它已经 已弃用。应用程序应停止使用 QuickDraw 并移至 Quartz

这是我的船构造器

/**Represents the Ship in the game*/
class Ship extends FloatObject{
Image SpaceShip = new FromFile("spaceship.png");
double angle;
double speed = 2;

【问题讨论】:

  • 如果您使您的代码更具可读性,即修复您的代码标签,这将真正帮助我们帮助您。
  • AsroidWorld构造函数中好像有NPE,请粘贴相关代码。
  • 我更新了帖子,希望现在更容易理解。
  • 我认为显示 Ship 构造函数会比 AsteroidWorld 构造函数更有用。看来,在 AsteroidWorld 中,您创建了一艘船;在此 Ship 的构造函数中,您尝试从文件创建图像 - 图像由 FromFile 对象表示,并且该对象的构造函数是引发异常的地方。在 image.FromFile 中,它尝试将一个值放入 HashTable 但该值为 null。
  • 这不是 Ship 的构造函数。构造函数是以对象命名的方法。

标签: java android android-emulator


【解决方案1】:

我的猜测是,在 Ship 的构造函数中,您没有显示,在您创建 FromFile 的新实例的那一行中,您将 null 值传递给 FromFile 的构造函数。 FromFile 的构造函数需要一个字符串。您甚至可能会尝试将 String 传递给它,但无论它到达那里可能实际上都是 null。

FromFile 的构造函数将一个值放入 HashTable,该值是 null 而不是它所期望的。这就是我无法在这里看到所有必要的东西而所能收集到的全部信息。

【讨论】:

  • 我应该将 .png 文件放在项目中的什么位置?我编辑了帖子,以便您可以看到我的船构造器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 2012-08-03
相关资源
最近更新 更多