【问题标题】:Android: App not runnin on Nexus 10 with Jellybean - works fine on older devicesAndroid:应用程序无法在带有 Jellybean 的 Nexus 10 上运行 - 在旧设备上运行良好
【发布时间】:2013-01-26 03:49:46
【问题描述】:

我的应用面向 2.2 版,并且似乎在我测试过的 3 台设备上运行良好(2.2 版和 2.3 版)

但是,我只是在 Google Nexus 10 平板电脑上运行它,并且启动画面工作正常,并且需要触摸输入来启动下一个活动(基于 SurfaceView 使用多线程的菜单系统),尽管它显示/动画正常,所有按钮都不起作用-我不确定从哪里开始,假设为较旧的Android API编写的应用程序与较新版本的操作系统不兼容,我错了吗?新版本肯定向后兼容吗?

谢谢大家!!

编辑:如果我反复点击开始按钮,Logcat 会显示:

所以不知道为什么在 JB 上这样做,但在运行旧操作系统的设备上可以 - 谢谢大家。

编辑 2:

“按钮”释放代码(在“按钮”按下后):

if (event.getAction()==MotionEvent.ACTION_UP){      

Intent StartNewGame = new Intent((Activity) getContext(), StartGame.class);     

    getContext().startActivity(StartGame);  

// Oddly, if I put a System.exit(0); here, game activity starts and everything is fine - obviously this is only for testing and needs to be removed.

return true;}

    }

【问题讨论】:

  • 尝试将您的 android 版本设置为 4.1
  • 您好,感谢您的评论,不幸的是,这不起作用 - 它似乎不再崩溃,但是按下开始按钮时游戏仍然没有开始。我的“目标 API”不应该设置为我所针对的实际最低版本吗?我刚把它改回 2.2,它还没有崩溃,但也没有启动 :-( 再次感谢!!!!!
  • 您可以定位到更高版本而不会对您的代码产生任何问题,但是有些方法已弃用(不会给出任何错误,但建议更改它)。按下启动按钮时会发生什么?您是否尝试将日志添加到您的按钮?
  • 谢谢,那么通常的方法是什么?我一直将我的目标 API 级别设置为我想要定位的最低 API - 我的理解是,如果我尝试使用不可用的 API,如果我将我的 API 设置为最新版本,Eclipse 会标记它,如果我使用的 API 在早期版本中不可用,Eclipse 会为我标记它 - 只是一种故障安全!当按下按钮时,我的游戏活动没有开始,几乎什么都没有发生!! :-( 我已经登录了,所以我可以在 DDMS 中看到正在注册的按钮按下!再次感谢您的所有帮助 :-)
  • 我不是说 manifest.xml 上的 api 目标,您可以通过右键单击您的项目 > 属性 > Android > 检查 Android 4.1 > 应用来将您的 android 构建更改为更高级别。你能编辑你的帖子并在你的按钮上添加你的代码吗?

标签: android api backwards-compatibility android-4.2-jelly-bean


【解决方案1】:
public int nextInt(int n) {
    if (n > 0) {
        if ((n & -n) == n) {
            return (int) ((n * (long) next(31)) >> 31);
        }
        int bits, val;
        do {
            bits = next(31);
            val = bits % n;
        } while (bits - val + (n - 1) < 0);
        return val;
    }
    throw new IllegalArgumentException();
}

这是来自 4.1 源代码的代码,所以看起来你是如何将 0 传递给函数的,有没有办法在你的代码中发生这种情况?

【讨论】:

  • Hmmmmm - 谢谢你,我会检查我的代码,看看有没有可能发生这种情况 - 也许 JB 处理 Randoms 的方式与 2.x 不同?!如果是这种情况,那就奇怪了……谢谢!!
  • 嘿只是让你知道奇怪,我认为这与实际的随机数例程无关,我认为这是一个红鲱鱼,它似乎与“事件。 getAction()" 部分代码 - JB 似乎不喜欢这样!只有当我触摸屏幕时,我才会开始遇到问题——有什么想法吗?!谢谢
  • 这很奇怪,因为您的堆栈跟踪清除显示抛出了 IllegalArgumentException。也许你的代码中有一个 try 块,并将输入记录到你的 nextInt() 调用中。
  • 嗨,请参阅我对上述海报回复的评论 - 我认为这是导致我的问题的原因 - 任何想法我“应该”将结束我的线程的代码放在哪里 - 显然是我的线程并没有结束,所以(我相信)导致了我的问题 - 欢迎提出任何建议,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 2012-12-03
  • 1970-01-01
相关资源
最近更新 更多