0

내 활동 중 하나에서 액션 바 공유 공급자를 원합니다. 주제가. 내가 활동에 대한 공유 옵션을 만드는 방법은 다음과ShareActionProvider가 Theme.Sherlock.Light.DarkActionBar에 오류를 발생시킵니다.

은 다음과 같습니다

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    ShareActionProvider provider = new ShareActionProvider(getSupportActionBar().getThemedContext()); 
    provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); 
    provider.setShareIntent(createShareIntent()); 
    menu.add(Menu.NONE, SHARE_ACTION_ID, 0, 
      getString(R.string.action_share)) 
      .setIcon(R.drawable.icon_share_white) 
      .setActionProvider(provider) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    return super.onCreateOptionsMenu(menu); 
} 

private Intent createShareIntent() { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, url); 
    return shareIntent; 
} 

을 그리고 이것은 내 baseTheme입니다 :

<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here.  

    --> 
</style> 

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    <item name="actionBarItemBackground">@drawable/action_item_background_selector</item> 
    <item name="android:actionBarItemBackground">@drawable/action_item_background_selector</item> 
</style> 

앱이 Theme.Sherlock와 함께 잘 작동하지만 난 내 AppTheme를 사용하는 경우가 있습니다 나이 오류 :

FATAL EXCEPTION: main 
android.content.res.Resources$NotFoundException: Resource ID #0x0 
at android.content.res.Resources.getValue(Resources.java:1026) 
at android.content.res.Resources.getDrawable(Resources.java:671) 
at com.actionbarsherlock.widget.ShareActionProvider.onCreateActionView(ShareActionProvider.java:170) 
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:264) 
at com.android.internal.view.menu.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:555) 
at com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1048) 
at com.android.internal.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91) 
at com.android.internal.view.menu.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:297) 
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:498) 
at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:829) 
at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:3192) 
at android.os.Handler.handleCallback(Handler.java:615) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4921) 
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:1027) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 
at dalvik.system.NativeStart.main(Native Method) 

나는이 종류의 질문과 그들의 받아 들여지는 응답을 많이 보았다. es 그러나 운 없음. 어떤 생각을 이것을 고치는 방법? 미리 감사드립니다.

편집 : 가 style.xml에서 AppTheme에서 "actionBarItemBackground"이러한 특성을 제거도 작동하지만 나뿐만 아니라 사용자 정의 배경을 가지고 액션 바 필요는 ... 그래서 그에 대한 해결책이 될 수 있을까?

+0

menu.add()의 세 번째 매개 변수는 무엇을합니까? – rekire

+0

그것은 "질서"이지만 문제를 일으키지 않습니다. – yahya

+0

당신이 맞습니다. 또 다른 추측으로는 올바른 ShareActionProvider 구현을 사용합니까? 네이티브 및 호환 구현도 있습니다. – rekire

답변

0

나는 여기에 답할 것이므로 50 개의 평판을 갖고 있지 않습니다.

이 오류 :

Resources$NotFoundException: Resource ID #0x0 

는 스타일 또는 스타일의 parent 지시어는 실행시에 안드로이드에 의해 해결 될 수 없음을 알려줍니다. styles.xml 파일을 다시 확인하십시오.

Eclipse를 사용하는 경우 각 지시문을 마우스 왼쪽 버튼으로 클릭하거나 Ctrl + 왼쪽 버튼을 눌러 name, parent 등 지시어의 정확성을 검사 할 수 있습니다. 클릭 된 값이 해석되면 Eclipse는 styles.xml 내의 다른 영역으로 이동하거나 새 스타일 시트 파일을 엽니 다.

UPDATE 1 :

@yahya : "내가 AppBase 테마를 사용 ... 그래서가 아니라 그냥 하나의 거의 모든 활동을 작동" 후 작동하지 않는 활동의 코드. 또한 AndroidManifest.xml 파일을 게시하십시오.

+0

감사하지만 AppBase 테마를 사용합니다. 기본 테마로 볼 수 있습니다. 거의 모든 활동이 작동하지만,이 것은 아닙니다. 그리고이 활동의 ​​테마를 Theme.Sherlock으로 변경하면 잘 작동합니다 ... – yahya