1.背景
画面に
ShareActionProvider
と
ViewPager
フラグメントを使用します。
私が望んでいたのは、現在表示されているフラグメント内から情報を取得してインテントを作成することでした。これにより、ShareActionProviderでインテントを設定できるようになります。
これは、ShareActionProviderのインテントを設定するために使用するコードです。
MenuItem actionItem = men.getMenu().findItem(R.id.menu_item_share_action_provider_action_bar);
ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
actionProvider.setShareIntent(createShareIntent(mProduct.mProduct));
Fragmentクラスのこれらの関数内など、いくつかの場所でこれを使用してみました。
onCreateView
onStart
また、FragmentPagerAdapterクラス内のこれらの関数で使用してみました。
getItem
2.問題
インテントは実際にはShareActionProvider内で設定されていますが、取得される情報は次のフラグメント(現在表示されていないフラグメント)に関するものです。例えば:
4つのフラグメント(frag1、frag2、frag3、frag4)があり、現在「frag1」を表示している場合、ShareActionProviderは「frag2」を共有しようとします。これは、正しい値を共有する「frag4」に到達するまで当てはまります。
私の推測では、フラグメントページャーは現在のビューと次のビュー(非表示)を作成し、それがShareActionProviderを設定します。この場合、「setShareIntent」の正しい場所はどこですか?