#java #android #shareactionprovider
#java #Android #shareactionprovider
Вопрос:
Я пытаюсь изменить функцию 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;
}
Кажется, что ActionProvider, который используется внутри activityChooser.setProvider()
, происходит из android.support.v4.view.ActionProvider
, а не android.view.ActionProvider
.
Если я изменю импорт на ActionProvider
to android.support.v4.view.ActionProvider
, то компиляция пройдет нормально, и я смогу запустить свое приложение, но когда меню расширяется, я получаю сообщение об ошибке MyShareActionProvider
(которое используется в menu.xml
с полным путем и является расширенным классом android.support.v4.viewActionProvider
), которое не может быть приведено к android.viewActionProvider
, что я и предполагаювозвращает inflater.inflate()
.
Не уверен, как действовать дальше.
Спасибо, Гэри