我会尝试最好地理解这一点......
此应用程序是用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?