问题描述
我想从 FragmentActivity 更改片段中的 ImageView(在代码中创建).(XML 中没有片段和标签).
I want to change a ImageView in fragment(that create in code), from FragmentActivity. (there is no fragment and tag in XML).
从 FragmentActivity 扩展并从 GooglePlayServicesClient.ConnectionCallbacks 实现的 MainActivity:
MainActivity that extends from FragmentActivity and implements from GooglePlayServicesClient.ConnectionCallbacks:
...
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:
FragmentAdapter that extends from FragmentPagerAdapter:
...
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;
//}
根据这个主题更改片段中的元素,来自片段活动:
According to this topic for change a element in fragment, from fragmentActivity:
从 Fragment 扩展而来的 Fragment1:
Fragment1 that extends from Fragment:
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 方法?
So how can i access to fragmentObject from MainActivity, to call changeImageView method?
如果我应该通过标签找到片段,根据this 主题,我应该在哪里设置标签以及如何找到?
If i should find fragment via tag, according to this topic, where i should set tag and how to find?
推荐答案
很明显可以根据您的特定需求进行调整,但这就是我用于我的应用程序的内容.
So obviously adjust for your specific needs, but this is what I use for my Application.
Fragment frag = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + mPager.getCurrentItem());
if(frag!=null&&mPager.getCurrentItem()==0)
{
((Fragment1) frag).changeImageView(1);
}
这篇关于从 fragmentActivity 刷新片段 UI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!