代码之家  ›  专栏  ›  技术社区  ›  Dr.jacky Mateusz Kaflowski

从fragmentActivity刷新片段UI

  •  2
  • Dr.jacky Mateusz Kaflowski  · 技术社区  · 10 年前

    我想从FragmentActivity更改片段中的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 从fragmentActivity更改片段中元素的主题:

    片段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方法?

    如果我应该通过标签找到片段,根据 this 主题,我应该在哪里设置标签以及如何查找?

    1 回复  |  直到 7 年前
        1
  •  6
  •   johng    10 年前

    因此,显然要根据您的具体需求进行调整,但这是我在应用程序中使用的。

     Fragment frag = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + mPager.getCurrentItem());
        if(frag!=null&&mPager.getCurrentItem()==0)
            {
               ((Fragment1) frag).changeImageView(1);
            }