我有一个非常奇怪的问题,我一生都无法弄清楚。我有一个即将完成的应用程序。我已经开始在不同版本的 Android 和模拟器中的不同屏幕尺寸/密度上对其进行测试。在我使用 Android 3.1 和 3.2 (Honeycomb) 之前,一切正常。IllegalStateException: No Activity
每次应用程序启动时我都会得到一个。我首先认为这是我的应用程序,所以我查看了堆栈跟踪,并没有提到我的应用程序中的任何方法或类。因此,我在我的应用程序支持的所有 Android 版本上进行了尝试,它适用于除 Honeycomb 之外的所有版本。我用谷歌搜索了 Honeycomb 和IllegalStateException: No Activity
并没有找到任何东西。于是我看了看屏幕尺寸,发现 Honeycomb 的唯一皮肤是 WXGA。我检查了我所有的drawables,我使用一个用于ldpi、mdpi、hdpi和xhdpi。但以防万一我把我的应用程序需要的所有drawables都扔到了默认的drawable文件夹中,但仍然遇到同样的问题。我正在为所有其他资源使用默认文件夹,所以我知道这不是原因。然后我尝试了一个较小的屏幕尺寸,令我惊讶的是它起作用了。所以我随后在 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);
}