3

我正在尝试修改 ShareActionProvider 函数,以便我可以拦截onClick事件并准备我要共享的内容,然后调用setShareIntent(). 到目前为止,我刚刚复制了ShareActionProvider()to的源代码MyShareActionProvider()并尝试使用我的代码副本编译/执行。

内部定义 的ShareActionProvider()用途ActivityChooserModel和类ActivityChooserViewandroid.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.ActionProviderand not android.view.ActionProvider

如果我更改 to 的导入ActionProviderandroid.support.v4.view.ActionProvider则编译通过 Ok 并且我可以启动我的应用程序,但是当菜单膨胀时,我收到一条错误消息MyShareActionProvidermenu.xml与完整路径一起使用,并且是 的扩展类android.support.v4.viewActionProvider)不能转换为android.viewActionProvider,我猜这是inflater.inflate()返回的。

不知道如何从这里开始。

谢谢你,加里

4

0 回答 0