我在使用ShareActionProvider
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
try
{
getMenuInflater().inflate(R.layout.menu, menu);
MenuItem item = menu.findItem(R.id.menu_item_share);
myShareActionProvider = (ShareActionProvider)item.getActionProvider();
myShareActionProvider.setShareHistoryFileName(
ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
myShareActionProvider.setShareIntent(createShareIntent());
return true;
}
catch ( Exception e )
{
}
return false;
}
This is the Android OS 2.3.6
崩溃说了这个
java.lang.NoSuchMethodError: android.view.MenuItem.getActionProvider
at com.marketing.AdvertisingActivity.onCreateOptionsMenu(AdvertisingActivity.java:183)
at android.app.Activity.onCreatePanelMenu(Activity.java:2194)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:360)
at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:605)
at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1259)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1717)
at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2607)
at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2582)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1914)
at android.os.Handler.dispatchMessage(Handler.java:130)
at android.os.Looper.loop(SourceFile:351)
at android.app.ActivityThread.main(ActivityThread.java:3814)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:538)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659)
at dalvik.system.NativeStart.main(Native Method)
如果应用程序位于try / catch块中,它怎么会崩溃?
谢谢!
答案 0 :(得分:2)
跟踪指向getActionProvider()
; MenuItem
上没有使用该名称的方法。如果您查看MenuItem
的{{3}},您会发现getActionProvider()
仅适用于运行在14级(即4.0.x)或更高级别的设备。大概(代码中有"这是Android OS 2.3.6和#34;)您没有在满足该要求的设备上运行此代码。
你试图抓住Exception
; NoSuchMethodError
是Error
。不建议您抓住这些。您应该检查版本号。
答案 1 :(得分:0)
你应该了解更多有关android v4,v7和v7 appcompat的信息。
尝试使用
MenuItemCompat.getActionProvider(item);
在您的share_menu.xml中验证您正在使用 “yourApp:actionProviderClass”而不是“android:action”并将值赋予
“android.support.v7.widget.ShareActionProvider”
将xmlns:yourApp =“http://schemas.android.com/apk/res-auto”添加到xml名称空间。
yourApp是您选择的字符串。希望这会有所帮助。