XML 레이아웃에 조각을 추가하는 방법
다음과 같이 조각을 포함하는 레이아웃이 있습니다.
<fragment
android:id="@+id/mainImagesList"
android:name="com.guc.project.ImagesList"
android:layout_width="match_parent"
android:layout_height="62dp"
android:layout_below="@+id/addimagebutton"
android:layout_weight="1"
android:paddingTop="55dp" />
이제이 조각을 가져 와서 캐스트해야 조작 할 수 있고 업데이트가 나타납니다. 어떻게 할 수 있습니까?!
편집 : 조각을 얻을 수 있다고 생각하지만 일부 변수를 변경하면 변경 사항이 나타나지 않습니다!
다음과 같이 조각 인스턴스를 가져올 수 있습니다.
getSupportFragmentManager().findFragmentById(R.id.yourFragmentId)
조각이 다른 조각에 포함 된 경우 getChildFragmentManager가 필요하지만 getFragmentManager는 필요하지 않습니다. 예를 들어 레이아웃 xml에서 다음과 같이 조각을 정의합니다.
<fragment
android:name="com.aventlabs.ChatFragment"
android:id="@+id/chatfragment"
android:background="#ffffff"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginTop="50dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" />
코드에서 다음과 같은 조각 인스턴스를 얻을 수 있습니다.
FragmentManager f = getChildFragmentManager();
FragmentTransaction transaction = f.beginTransaction();
chatFragment = f.findFragmentById(R.id.chatfragment);
if (chatFragment != null) {
transaction.hide(chatFragment);
}
transaction.commit();
나는 안드로이드에서 똑같은 일을했고 인터페이스를 사용하는 가장 간단한 방법입니다. 6 개의 조각이있는 활동이 있었고 그중 3 개만 업데이트해야했습니다.
나는 이것을 사용한다
final Integer numeroFragments = ((PagerAdapterOfe) mViewPager.getAdapter()).getCount();
for (int i=0; i<numeroFragments; i++) {
Object fragment = ((PagerAdapterOfe) mViewPager.getAdapter()).getItem(i);
// If the fragment implement my interface, update the list
if (fragment instanceof IOfertaFragment){
((IOfertaFragment) fragment).actualizaListaOfertas();
}
}
Where, PageAdapterOfe is my activity fragments adapter. I loop all of my fragments and search for those that implement my interface, when i found one, I execute the method defined by my interface and that is!
I use this code inside the activity that holds all the fragments, in response a broadcast signal, you can put it where you need.
The interface:
public interface IOfertaFragment {
public void actualizaListaOfertas();
}
You can find the fragment using findFragmentById (if you know the component it is included in) or by findFragmentByTag (if you know its tag)
I don't know which variables you want to update, but you can replace the fragment with another fragment using the FragmentTransaction API.
See http://developer.android.com/guide/components/fragments.html for examples.
참고URL : https://stackoverflow.com/questions/13911261/how-to-get-a-fragment-added-in-an-xml-layout
'IT박스' 카테고리의 다른 글
마크 다운 파일 미리보기를위한 Vim 플러그인이 있습니까? (0) | 2020.11.14 |
---|---|
Json.net의 null 필드 무시 (0) | 2020.11.14 |
“Non Zero Exit Status”R 3.0.1 'XML'및 'RCurl' (0) | 2020.11.14 |
fit_transform ()은 2 개의 위치 인수를 사용하지만 3 개는 LabelBinarizer로 제공되었습니다. (0) | 2020.11.14 |
내 Perl 스크립트에 다른 파일의 함수를 어떻게 포함합니까? (0) | 2020.11.14 |