我想在fragmentactivity的fragment(在代码中创建)中更改imageview。(XML中没有片段和标记)。
从FragmentActivity扩展并从GooglePlayServicesClient.connectionCallbacks实现的MainActivity:
...
FragmentAdapter mAdapter;
ViewPager mPager;
...
public void onCreate(Bundle savedInstanceState){
...
FragmentManager fm = getSupportFragmentManager();
mAdapter = new FragmentAdapter(fm);
mPager.setAdapter(mAdapter);
...}
@Override
public void onConnected(Bundle connectionHint){
//*** I want to change a ImageView on Fragment1 here
}
从FragmentPageRadapter扩展的FragmentAdapter:
...
private FragmentManager mFragmentManager;
public FragmentAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int pos){
// String name = makeFragmentName(R.id.mainPager, pos);
// Fragment fragmentObject = mFragmentManager.findFragmentByTag(name);
Fragment fragmentObject = null;
switch(pos){
case 0:
fragmentObject = new Fragment1();
break;
...
}
return fragmentObject;
}
...
//private static String makeFragmentName(int viewId, iont index){
//return "android:switcher:" + viewId + ":" + index;
//}
根据this更改片段中元素的主题,来自片段活动:
从片段延伸的片段1:
private ImageView IMGThisImageShouldChange = null;
public View onCreateView(...){
IMGThisImageShouldChange = (ImageView)v.findViewById(R.id.TargetImage);
...
}
public void changeImageView(int resourceId){
IMGThisImageShouldChange.setImageResource(resouirceId);
}
本主题中的注释行显示:
//不要每次设置文本时都创建新对象。使用相同的
用于视图寻呼机的片段对象。
那么,如何从mainactivity访问fragmentobject来调用changeimageview方法呢?
如果要通过tag找到片段,根据this主题,应该在哪里设置tag,如何查找?
最佳答案
所以很明显,要根据您的具体需要进行调整,但这是我在应用程序中使用的。
Fragment frag = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + mPager.getCurrentItem());
if(frag!=null&&mPager.getCurrentItem()==0)
{
((Fragment1) frag).changeImageView(1);
}