3

ShareActionProvider 関数を変更して、onClickイベントをインターセプトし、共有したいコンテンツを準備してから呼び出すことができるようにしようとしていますsetShareIntent()。これまでのところ、ソースコードをコピーして、コードのコピーでコンパイル/実行しようとしましたShareActionProvider()MyShareActionProvider()

との中で定義されているShareActionProvider()用途ActivityChooserModelActivityChooserViewクラス 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ありませんandroid.view.ActionProvider

のインポートをActionProvidertoに変更するandroid.support.v4.view.ActionProviderと、コンパイルは正常に行われ、アプリを起動できますが、メニューが膨張すると、エラーが表示されますMyShareActionProvider(これはmenu.xmlフルパスで使用され、の拡張クラスですandroid.support.v4.viewActionProvider)にキャストできません。android.viewActionProviderこれが返されると思いinflater.inflate()ます。

ここから先に進む方法がわからない。

ありがとう、ゲイリー

4

0 に答える 0