我正在尝试修改 ShareActionProvider 函数,以便我可以拦截onClick
事件并准备我要共享的内容,然后调用setShareIntent()
. 到目前为止,我刚刚复制了ShareActionProvider()
to的源代码MyShareActionProvider()
并尝试使用我的代码副本编译/执行。
内部定义
的ShareActionProvider()
用途ActivityChooserModel
和类ActivityChooserView
android.support.v7.internal.widget.ActivityChooserModel
android.support.v7.internal.widget.ActivityChooserView
一切似乎都很好,除了函数activityChooserView.setProvider(this)
中的调用onCreateActionView()
。
@Override
public View onCreateActionView() {
// Create the view and set its data model.
ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mShareHistoryFileName);
ActivityChooserView activityChooserView = new ActivityChooserView(mContext);
activityChooserView.setActivityChooserModel(dataModel);
// Lookup and set the expand action icon.
TypedValue outTypedValue = new TypedValue();
mContext.getTheme().resolveAttribute(R.attr.actionModeShareDrawable, outTypedValue, true);
Drawable drawable = mContext.getResources().getDrawable(outTypedValue.resourceId);
activityChooserView.setExpandActivityOverflowButtonDrawable(drawable);
activityChooserView.setProvider(this);
// Set content description
activityChooserView.setDefaultActionButtonContentDescription(
R.string.shareactionprovider_share_with_application);
activityChooserView.setExpandActivityOverflowButtonContentDescription(
R.string.shareactionprovider_share_with);
return activityChooserView;
}
看来里面使用的 ActionProvideractivityChooser.setProvider()
来自android.support.v4.view.ActionProvider
and not android.view.ActionProvider
。
如果我更改 to 的导入ActionProvider
,android.support.v4.view.ActionProvider
则编译通过 Ok 并且我可以启动我的应用程序,但是当菜单膨胀时,我收到一条错误消息MyShareActionProvider
(menu.xml
与完整路径一起使用,并且是 的扩展类android.support.v4.viewActionProvider
)不能转换为android.viewActionProvider
,我猜这是inflater.inflate()
返回的。
不知道如何从这里开始。
谢谢你,加里