2016-08-11 80 views
1

我有一個應用程序在選擇項目菜單時創建一個Intent,但是當用戶第一次點擊這個按鈕時,應用程序會崩潰並顯示以下堆棧跟蹤。Android應用程序崩潰java.lang.NoClassDefFoundError

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 
     android:name=".activity.ConfigurationActivity" 
     android:parentActivityName=".activity.MainActivity"> 
    </activity> 

此外,以下是被告是問題的通過調用堆棧中的事業線:

Intent hashCodeIntent = new Intent(getApplicationContext(), ConfigurationActivity.class); 

在StackOverflow中發現的一些答案指出,乾淨和重建會做的伎倆,但我已經嘗試沒有任何運氣。我也嘗試將MultiDex添加到gradle文件以及我的自定義應用程序類中,但這也導致無法執行。

其他人可以有任何見解我可能做錯了什麼?真正有趣的是,這個錯誤只發生在用戶第一次點擊「配置」屏幕按鈕時。應用程序崩潰後,用戶可以重新打開它並正常點擊按鈕。

預先感謝您。

UPDATE

我已經忘了提及,Android的監視器還崩潰前右記錄以下信息:

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和錯誤沒有顯示。也許它與調試有關?或者甚至與gradle版本有關?我目前使用gradle的最後一個版本。

+1

將'getApplicationContext()'更改爲'this' – petey

+0

如果在發佈完整代碼時petey的溶劑不起作用,請致電。 –

+0

您是否嘗試過清潔建築項目? –

回答

0

嘗試改變getAplicationContext()getActivity()

有時getAplicationContext返回null。

+0

我無法在該上下文中調用getActivity()。但更改爲@petey建議也不起作用。 –

+0

我會說這是相反的方式。如果你想知道上下文之間有什麼區別,請查看這些鏈接https://possiblemobile.com/2013/06/context/和http://stackoverflow.com/questions/7298731/when-to-call-activity- context-or-application-context和http://stackoverflow.com/questions/987072/using-application-context-everywhere/987503#987503 –