首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionBarSherlock ShareActionProvider问题

ActionBarSherlock ShareActionProvider问题
EN

Stack Overflow用户
提问于 2013-01-24 10:09:38
回答 1查看 2.5K关注 0票数 4

阿斯利康公司( ActionBarSherlock )就是从最新的资源中建立起来的。当我使用ABS ShareActionProvider时,我有一个异常被抛出。我可以很好地完成onCreateOptionsMenu()调试。如果我去掉@+id/menu_item_share的xml,apk运行得很好。

在调试模式下,我最多只能单步执行SherlockFragmentActivity中的onCreatePanelMenu()。

main_menu.xml:

代码语言:javascript
复制
 <item android:id="@+id/menu_item_share"
      android:icon="@+id/ic_action_share"
      android:showAsAction="ifRoom"
      android:title="@string/menu_share"
      android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" 
 />

相关代码:

代码语言:javascript
复制
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.widget.ShareActionProvider;

public class MyActivity extends SherlockFragmentActivity {

. . . 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.main_menu, menu);

    mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.menu_item_share).getActionProvider();

    if(this.verse.verse != null)
        mShareActionProvider.setShareIntent(getDefaultShareIntent());

    return true;
}

public Intent getDefaultShareIntent(){
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "text to share");
    sendIntent.setType("text/plain");

    return sendIntent;
}
. . . 

}

例外:

代码语言:javascript
复制
01-23 19:53:38.048: WARN/dalvikvm(14643): threadid=1: thread exiting with uncaught exception (group=0x411d4930) 01-23 19:53:38.048: ERROR/AndroidRuntime(14643): FATAL EXCEPTION: main
        android.content.res.Resources$NotFoundException: Resource ID #0x7f030008
        at android.content.res.Resources.getValue(Resources.java:1014)
        at android.content.res.Resources.loadXmlResourceParser(Resources.java:2166)
        at android.content.res.Resources.getLayout(Resources.java:853)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
        at com.actionbarsherlock.widget.ActivityChooserView.<init>(ActivityChooserView.java:229)
        at com.actionbarsherlock.widget.ActivityChooserView.<init>(ActivityChooserView.java:202)
        at com.actionbarsherlock.widget.ActivityChooserView.<init>(ActivityChooserView.java:192)
        at com.actionbarsherlock.widget.ShareActionProvider.onCreateActionView(ShareActionProvider.java:164)
        at com.actionbarsherlock.internal.view.ActionProviderWrapper.onCreateActionView(ActionProviderWrapper.java:23)
        at android.view.ActionProvider.onCreateActionView(ActionProvider.java:98)
        at com.android.internal.view.menu.MenuItemImpl.getActionView(MenuItemImpl.java:580)
        at com.android.internal.view.menu.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:157)
        at com.android.internal.view.menu.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:455)
        at com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1048)
        at com.android.internal.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:87)
        at com.android.internal.view.menu.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:190)
        at com.android.internal.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:244)
        at com.android.internal.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:946)
        at com.android.internal.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:969)
        at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:450)
        at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:769)
        at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:201)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
        at android.view.Choreographer.doCallbacks(Choreographer.java:562)
        at android.view.Choreographer.doFrame(Choreographer.java:531)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5191)
        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:795)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
        at dalvik.system.NativeStart.main(Native Method)
EN

回答 1

Stack Overflow用户

发布于 2013-01-24 10:12:45

代码语言:javascript
复制
  android:icon="@+id/ic_action_share"

这是错误的。您并不是在分配一个可绘制的,您只是向您的R.java类添加了一个Id。您需要在此处引用一个图标,如下所示:

代码语言:javascript
复制
   android:icon="@drawable/ic_action_share"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14492757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档