2013-06-27 109 views
2

我得到這個異常:的Android - ActionbarSherlock崩潰,出現異常

java.lang.ClassCastException: android.widget.ShareActionProvider cannot be cast to com.actionbarsherlock.view.ActionProvider 
     at com.actionbarsherlock.view.MenuInflater$MenuState.readItem(MenuInflater.java:389) 
     at com.actionbarsherlock.view.MenuInflater.parseMenu(MenuInflater.java:162) 
     at com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:112) 
     at com.marketing.MainActivity.onCreateOptionsMenu(MainActivity.java:880) 
     at com.actionbarsherlock.app.SherlockActivity.onCreatePanelMenu(SherlockActivity.java:184) 
     at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559) 
     at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:65) 
     at com.actionbarsherlock.app.SherlockActivity.onCreateOptionsMenu(SherlockActivity.java:149) 
     at android.app.Activity.onCreatePanelMenu(Activity.java:2444) 
     at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:388) 
     at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:739) 
     at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2833) 
     at android.os.Handler.handleCallback(Handler.java:605) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4424) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
     at dalvik.system.NativeStart.main(Native Method) 

這種方法:

public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.main_menu, menu); 
    return true; 
} 

在這條線:

inflater.inflate(R.menu.main_menu, menu); 

,這裏是我的MAIN_MENU。 xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:id="@+id/menu_item_share"   
android:showAsAction="ifRoom"   
android:title="Share"   
android:actionProviderClass="android.widget.ShareActionProvider" /> 

</menu> 

我想要做的是讓ListNavigation和ActionbarShare都出現在導航欄上。有誰會知道如何解決這個崩潰?

謝謝, 亞歷克斯

回答

1

ActionBarSherlock的MenuInflater需要一個com.actionbarsherlock.view.ActionProvider.

你actionProviderClass是android.widget.ShareActionProvider這顯然不延長ActionBarSherlock的ActionProvider。因此ClassCastException。

ActionBarSherlock包含一些示例,其中包括一些顯示ActionProviders使用的示例。退房的文件夾

ActionBarSherlock\actionbarsherlock-samples\demos\res\menu

拿到的菜單XML文件的兩個例子和

ActionBarSherlock\actionbarsherlock-samples\demos\src\com\actionbarsherlock\sample\demos 爲根據源

(ShareActionProviders.java and ActionProviders.java)

+0

謝謝。我確實使用了這些樣本,並將它與ListNavigation一起使用。但是我在菜單上放置了兩個元素時遇到了很大的困難:共享小部件和ListNavigation – Genadinik

+0

我剛剛擺脫了ShareActionProvider的導入,但奇怪的是它編譯了。我期待它給出一個語法錯誤。 – Genadinik

+0

那麼如果你描述你遇到的「主要困難」的性質,我可能會提供幫助。我正在使用ActionBarSherlock並使用幾乎所有的功能,包括自定義列表導航,動作提供者等。 –

相關問題