我有一个非常奇怪的问题,我一生都无法弄清楚。我有一个即将完成的应用程序。我已经开始在不同版本的 Android 和模拟器中的不同屏幕尺寸/密度上测试它。一切工作正常,直到我使用 Android 3.1 和 3.2 (Honeycomb)。我得到一个IllegalStateException: No Activity
每次应用程序启动时。我首先以为这是我的应用程序,所以我查看了堆栈跟踪,发现我的应用程序中没有提及任何方法或类。因此,我在我的应用程序支持的所有 Android 版本上尝试了它,它在除 Honeycomb 之外的每个版本中都有效。我用谷歌搜索了蜂巢IllegalStateException: No Activity
并没有发现任何东西。于是我查看了屏幕尺寸,发现 Honeycomb 的唯一皮肤是 WXGA。我检查了所有的可绘制对象,我正在使用一个用于 ldpi、mdpi、hdpi 和 xhdpi。但以防万一我将应用程序所需的所有可绘制对象放入默认可绘制文件夹中,但仍然遇到相同的问题。我对所有其他资源使用默认文件夹,所以我知道这不是原因。然后我尝试了较小的屏幕尺寸,令我惊讶的是它竟然有效。所以我随后在 Android 4.1 上对其进行了测试,并使用 1280x800 和 160 的密度来模拟 WXGA。而且效果很好。所以它特定于 WXGA(1280x800 mdpi) 和 Honeycomb。我调试并单步执行了我的代码,它实际上成功地通过了onCreate()
。我认为它实际上经历了onCreate()
两次。我没有凌驾于一切之上onResume()
在这个Activity
。我在谷歌上花了更多时间,但我找不到任何与我所经历的事情相关的东西。以防万一它有帮助这是我的onCreate()
。如果有人能阐明这一点,我将永远感激你。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
mResources = getResources();
mDialog = new ProgressDialog(this);
mUrl = mResources.getString(R.string.rate_url);
mEmailSubject = mResources.getString(R.string.email_subject);
mChoose = mResources.getString(R.string.email_choose);
mSendTo = mResources.getString(R.string.email_send_to);
mLoadingPlaces = mResources.getString(R.string.places_loading);
mAmazonAppStore = mResources.getString(R.string.amazon_app);
mButton1 = (Button) findViewById(R.id.tip_btn);
mButton2 = (Button) findViewById(R.id.preference);
mButton3 = (Button) findViewById(R.id.rate_btn);
mButton4 = (Button) findViewById(R.id.feedback_btn);
// Load the font and the set the font for each Button.
Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/ArchitectsDaughter.ttf");
mButton1.setTypeface(tf);
mButton2.setTypeface(tf);
mButton3.setTypeface(tf);
mButton4.setTypeface(tf);
}
好吧,出于好奇,我又回去尝试了一次。我打算安装它并多次打开它,看看它是否每次都有效。令我惊讶的是它每次都有效!!!!我已经玩了几分钟卸载并重新安装它及其工作。这很奇怪,因为我知道我之前已经在 Honeycomb 上测试过它并且它在过去是有效的。所以我不知道这是否只是模拟器中的一个小故障,但现在看起来没问题。我只是希望我有一个具有此配置的设备来测试它。因此,如果有人对可能造成这种情况的原因有任何想法或建议,我愿意调查每一个来确定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)