2

FragmentActivity에서 조각 (코드에서 생성)의 ImageView를 변경하려고합니다. XML에는 조각과 태그가 없습니다. FragmentActivity에서 연장fragmentActivity에서 새로 고침 조각 UI

MainActivity는 GooglePlayServicesClient.ConnectionCallbacks에서 구현 : FragmentPagerAdapter로부터 연장

... 
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 
} 

FragmentAdapter : 변화 fragmentActivity에서 단편의 요소에 대한

... 
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 주제 :

단편 : 단편 :

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

jgriffsta 님의 답변입니다. 이 태그는'onCreate()'메소드에서 null이 될 것입니다 (조각 트랜잭션은 비동기 적이기 때문에'onConnected()'콜백에서 그 코드를 사용하면 괜찮습니다.) – Luksprog

+0

@Luksprog 맞아요. 내 기술이이 변경되었습니다 : http://stackoverflow.com/questions/8785221/retrieve-a-fragment-from-a-viewpager.하지만 getItem() newInstance()에 대한 생각이 전혀 없어. 그 코드의 기능은 무엇입니까? 2 - 어떤 기술이 더 좋습니까? –

+1

1. 선언 된 클래스의 객체를 반환하는 정적 메서드입니다 (일반적인 Java 패턴입니다). 2. 링크 한 코드는 더 좋지 않습니다. 변경 될 수있는 태그에 의존하지 말라. – Luksprog

답변

5

분명히 귀하의 특정 요구에 맞게 조정하지만, 이것은 내 응용 프로그램에 사용하는 것입니다.

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

내 기술을 다음과 같이 변경했습니다. http://stackoverflow.com/questions/8785221/retrieve-a-fragment-from-a-viewpager ;;;;; 하지만 고마워요. 어쨌든 당신의 대답은 옳습니다. –