Android - ActionbarSherlock崩溃异常

时间:2013-06-27 01:39:32

标签: android actionbarsherlock android-actionbar

我得到了这个例外:

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 个答案:

答案 0 :(得分: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)

相关问题