2014-07-11 99 views
1

我開發了android應用程序。啓動應用程序後,它顯示啓動畫面和登錄,它perfetly適用於模擬器真正設備,但是當我按跳過設備上選擇應用程序崩潰,但不是在模擬器。這裏是錯誤的logcat:應用程序在仿真器上運行,但不在實際設備上運行

07-11 12:48:59.735: D/skia(4382): jpeg_decoder mode 1, config 6, w 640, h 1136, sample 

1, bsLength 142a5!! 
07-11 12:49:01.589: D/libc-netbsd(4382): getaddrinfo: autolife.com.np get result from proxy >> 
07-11 12:49:02.126: D/skia(4382): jpeg_decoder mode 1, config 6, w 640, h 1136, sample 1, bsLength f1ae!! 
07-11 12:49:08.694: W/dalvikvm(4382): VFY: unable to resolve virtual method 62: Landroid/app/ActionBar;.setHomeAsUpIndicator (I)V 
07-11 12:49:08.868: E/AndroidRuntime(4382): FATAL EXCEPTION: main 
07-11 12:49:08.868: E/AndroidRuntime(4382): java.lang.NoSuchMethodError: android.app.ActionBar.setHomeAsUpIndicator 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at np.com.autolife.activity.BaseActivity.onCreate(BaseActivity.java:41) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at np.com.autolife.AutoLifeNepal.onCreate(AutoLifeNepal.java:33) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.app.Activity.performCreate(Activity.java:5122) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.app.ActivityThread.access$600(ActivityThread.java:162) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.os.Handler.dispatchMessage(Handler.java:107) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.os.Looper.loop(Looper.java:194) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at android.app.ActivityThread.main(ActivityThread.java:5371) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at java.lang.reflect.Method.invoke(Method.java:525) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
07-11 12:49:08.868: E/AndroidRuntime(4382):  at dalvik.system.NativeStart.main(Native Method) 

請問有人已經遇到過這個問題嗎?請幫我找出解決方案。提前致謝。

+0

請告訴我下面的答案是否正確,以解決您的問題。 –

+0

你的第二種方法似乎是工作,但是當我按照你的程序運行應用程序後,它與上面的錯誤相同。而你的第一種方法不能幫助我的情況。 –

+0

對不起,但它必須工作..你可以發佈你的BaseActivity代碼和你使用的主題嗎?我認爲你做錯了什麼。如果(在使用第二種解決方案之後)你擁有完全相同的堆棧跟蹤,這意味着你沒有刪除導致錯誤的行(setHomeAsUpIndicator)。 –

回答

5

在您的堆棧跟蹤日誌可以SE 的NoSuchMethodError - 這意味着系統無法找到下面的方法: http://developer.android.com/reference/android/app/ActionBar.html#setHomeAsUpIndicator(android.graphics.drawable.Drawable)

android.app.ActionBar.setHomeAsUpIndicator

正如文件中提到

不知道您正在嘗試使用哪一個,但兩者都有:

setHomeAsUpIndicator(Drawable) 


setHomeAsUpIndicator(int) 

是在API級18加入。 這意味着它們不會在較低的API版本上可用。這可能是您的問題的原因 - 您正在嘗試使用API​​版本較低的手機執行此代碼(JELLY_BEAN_MR2以下)。

你有2種選擇:

。調用此方法之前檢查API版本:

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR2) { 
    actionBar.setHomeAsUpIndicator(int); 
} 

這將避免崩潰,但不會採取較低版本的API任何影響 - 所以你可能想要去的第二個選項來實現自己的造型的目標。


II。通過添加「android:homeAsUpIndicator」屬性,您可以安全地從樣式(因爲它可以從API 11獲得)安全地完成代碼中的homeAsUpIndicator。 http://developer.android.com/reference/android/R.attr.html#homeAsUpIndicator

<style name="AppTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:homeAsUpIndicator">@drawable/my_home_as_up_indocator</item> 
</style> 

問候。

+0

很好的答案... upvote :) –

相關問題