启动活动会导致崩溃

时间:2018-01-18 01:33:01

标签: android framebuffer

我会尝试最好地理解这一点......

此应用程序是用Android Studio编写的,但不使用任何XML。这都是帧缓冲。我知道这可能看起来很不寻常,但是如果你正在构建一个游戏,那里所有的XML活动开销都是不必要的,那么跳过它就好了。 Kilobolt游戏框架教程是此基础。多年来我对它进行了相当多的修改,以处理一些新的东西。但这是核心代码库。

所以,这个游戏非常有效。没问题。我最近实施了一个现场高分表。那部分也很有效。

但后来我需要添加一种方法供用户提交他们的分数。框架不允许的一件事是文本输入。就像,甚至根本没有。我的解决方案是添加XML活动。它仅用于提交分数。除此之外,它甚至不是该计划的一部分。

这在我的LG手机(Android 7.0)上效果很好。在模拟器(Android 7.0)中运行良好。 但是一旦我尝试在较旧的设备(Android 6.0及更早版本)上启动活动,程序就会崩溃。

这是我从Google Play获取的错误日志:

android.util.AndroidRuntimeException: 
  at android.app.ContextImpl.startActivity (ContextImpl.java:1420)
  at android.app.ContextImpl.startActivity (ContextImpl.java:1407)
  at android.content.ContextWrapper.startActivity (ContextWrapper.java:323)
  at com.klawton.twentyonegameads.showScores.launchScores (showScores.java:297)
  at com.klawton.twentyonegameads.showScores.update (showScores.java:192)
  at com.klawton.framework.implementation.AndroidFastRenderView.run (AndroidFastRenderView.java:47)
  at java.lang.Thread.run (Thread.java:841)

追踪它,你可以看到我的程序的部分。 showScores.launchScores是调用Intent以启动活动的void。此时,showScores应该在后台并且新的Activity应该在顶部。就像我说的那样,这可以在新系统上运行。 AndroidFastRenderView中的行是来自主应用程序的调用,用于在当前屏幕上运行update()void,该屏幕当前在后台。这似乎是应用程序崩溃的地方。

我尝试将其放入try / catch中。这只会使活动无法启动。我试着告诉主程序暂停。它仍然崩溃。我尝试设置一个布尔值来禁用活动已打开的更新。应用程序崩溃了。

如果有人对这里发生的事情有任何想法,那就太好了。

编辑: 以下是Context .java的完整代码。

import android.app.Application;
import android.content.Context;

public class MyApplication extends Application{

    private static Context context;

    public void onCreate(){
        super.onCreate();
        MyApplication.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return MyApplication.context;
    }
}

编辑2: 我连接了我的旧手机,得到了一个合理的错误信息:

E/MYAPP: exception: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

0 个答案:

没有答案