1.背景
我有一个屏幕有一个
ShareActionProvider
还有一个
ViewPager
使用片段.
我希望做的是从当前可见的片段中获取一些信息来创建一个意图,然后我就可以在 ShareActionProvider 上设置意图.
What I was hoping to do was get some information from inside the currently visible fragment to create an intent, I would then be able to set the intent on the ShareActionProvider.
这是我用来设置 ShareActionProvider 意图的代码:
This is the code I use to set the intent of the 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 类的这些函数中:
I have tried using this in several places such as within these functions of the Fragment class :
onCreateView
onStart
我也尝试在 FragmentPagerAdapter 类中的这些函数中使用它:
I have also tried using it in these functions within the FragmentPagerAdapter class :
getItem
<强>2.问题
虽然意图实际上是在 ShareActionProvider 中设置的,但获得的信息是针对下一个片段(当前未显示的片段).例如:
Although the intent is actually getting set within the ShareActionProvider, the information that is obtained is for the next fragment (the one not currently being shown). For example:
如果我有 4 个片段:frag1、frag2、frag3、frag4我目前正在查看frag1",ShareActionProvider 将尝试共享frag2".这是真的,直到它到达frag4",它将共享正确的值.
If I have 4 fragments : frag1, frag2, frag3, frag4 and I am currently viewing "frag1" the ShareActionProvider will attempt to share "frag2". This is true until it reaches "frag4" where it will share the correct value.
我的猜测是片段分页器创建了当前视图和下一个视图(隐藏),这反过来又设置了 ShareActionProvider.如果是这种情况,那么setShareIntent"的正确位置在哪里?
My guess is that the fragment pager creates the current view and the next view (hidden), which is in turn setting the ShareActionProvider. If this is the case then where is the correct place to "setShareIntent"?
我自己设法弄清楚了如何做到这一点.我最终做的是覆盖
I managed to figure out how to do this myself. What I ended up doing is overriding the
OnPageChangeListener
在fragmentactivity中
in the fragmentactivity
private final OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
TestFragment frag = (TestFragment) adapter.mFragments.get(pager.getCurrentItem());
frag.setShareActionIntent();
}
};
这篇关于片段内的Android setShareIntent的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!