我有一个应用程序在选择项目菜单时创建一个Intent,但是当用户第一次单击此按钮时,应用程序会崩溃并显示以下堆栈跟踪。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.systemsat.monitriip, PID: 17818
java.lang.NoClassDefFoundError: br.com.systemsat.monitriip.activity.ConfigurationActivity
at br.com.systemsat.monitriip.activity.MainActivity.onOptionsItemSelected(MainActivity.java:212)
at android.app.Activity.onMenuItemSelected(Activity.java:2912)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:421)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:188)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:663)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:155)
at android.view.View.performClick(View.java:5201)
at android.view.View$PerformClick.run(View.java:21163)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
下面是我在AndroidManifest.xml中的Activity声明:
<activity
android:name=".activity.ConfigurationActivity"
android:parentActivityName=".activity.MainActivity">
</activity>
此外,下面是被调用堆栈引起问题的原因:
Intent hashCodeIntent = new Intent(getApplicationContext(), ConfigurationActivity.class);
在StackOverflow中找到的一些答案指出,清洁和重建可以解决这个问题,但我已经尝试过没有任何运气。我也尝试将MultiDex添加到gradle文件以及我的自定义Application类中,但这也导致了无法使用。
对于我可能做错的事情,其他人是否有任何见解?真正有趣的是,这个错误只发生在用户第一次点击&#34;配置&#34;屏幕按钮。应用程序崩溃后,用户可以重新打开它并正常点击按钮。
提前谢谢。
更新
我忘记提及Android Monitor也会在崩溃前记录以下信息:
Rejecting re-init on previously-failed class java.lang.Class<br.com.systemsat.monitriip.activity.ConfigurationActivity>
更新2
这是我的onOptionsItemSelected方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_action_config:
Intent hashCodeIntent = new Intent(this, ConfigurationActivity.class);
hashCodeIntent.putExtra("isConfigurationCall", true);
startActivity(hashCodeIntent);
break;
}
return true;
}
更新3
我刚刚为测试目的生成了一个apk,错误没有显示。也许它与debuging有关?甚至与gradle版本有关?我目前使用最后一个版本的gradle。
答案 0 :(得分:0)
尝试更改getAplicationContext()
getActivity()
有时getAplicationContext返回null。