آموزش اندروید-Action اشتراک گذاری
آن چه در این درس خواهید آموخت:
مواردی که باید مطالعه کرده باشید:
افزودن Action به اشتراک گذاری
پیاده سازی یک Action مفید و کاربرپسند در Action Bar با معرفی ActionProvider در اندرویدهای 4.0 به بالاتر (API 14 به بعد) آسان تر شده است. هنگامی که ActionProvider به آیتم منو در action bar ضمیمه می شود، هم ظاهر و هم رفتار آن آیتم را مدیریت می کند. با استفاده از ShareActionBar کافی است شما تنها یک intent مشترک فراهم می کنید و ما بقی کارها را خود ShareActionBar انجام می دهد.
توجه: ShareActionBar از شروع API 14 به بعد در دسترس می باشد.
تعاریف منویتان را به روز کنید
برای شروع کار با ShareActionProviderها، ابتدا برای آیتم مربوطه یک خصوصیت android:actionProviderClass در فایل منبع منو (menu resource) ایجاد کنید
با این کار مسئولیت ظاهر و کاربرد آیتم به ShareActionProvider سپرده می شود. با این وجود، می بایست به provider بگوییم که چه چیزی را می خواهید به اشتراک بگذارید.
استفاده از actionBarProvider
<menuxmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_item_share"
android:showAsAction="ifRoom"
android:title="Share"
android:actionProviderClass=
"android.widget.ShareActionProvider"/>
...
</menu>
تنظیم Intent مشترک
برای اینکه ShareActionProvider کار کند، می بایست برای آن یک intent مشترک فراهم نمایید. این intent مشترک می بایست مشابه همان چیزی باشد که در آموزش اندروید-ارسال به دیگر appها به همراه ACTION_SEND و قرار دادن اطلاعات بیشتر از طریق extraها مانند EXTRA_TEXT و EXTRA_STREAM توضیح داده شد. برای مقدار دهی یک Intent مشترک، ابتدا زمانی که دارید منبع منو را روی activity سوار (inflate) می کنید، آیتم منوی مربوطه را پیدا کنید سپس متد ()MenuItem.getActionProvider را فراخوانی کنید تا یک نمونه از ShareActionProvider بازیابی شود. از ()setShareIntent برای مرتبط کردن intent مشترک با آیتم action استفاده کنید.
private ShareActionProvider mShareActionProvider;
...
@Override
public boolean onCreateOptionsMenu(Menu menu){
// Inflate menu resource file.
getMenuInflater().inflate(R.menu.share_menu, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.menu_item_share);
// Fetch and store ShareActionProvider
mShareActionProvider =(ShareActionProvider) item.getActionProvider();
// Return true to display menu
return true;
}
// Call to update the share intent
private void setShareIntent(Intent shareIntent){
if(mShareActionProvider !=null){
mShareActionProvider.setShareIntent(shareIntent);
}
}
تنها کاری که شما ممکن است نیاز پیدا کنید که انجام دهید عبارت است از اینکه intent مشترک را هنگام ایجاد منوهایتان تنظیم کنید یا آن را تنظیم کنید و هنگامی که UI تغییر کرد به روز کنید.
- نوشته شده توسط مظاهر نصوحی
- بازدید: 8731