2013-05-03 5 views
1

Fragment-ListView에서 작업 중이며 출력 이미지에 이미지가 표시됩니다. 클릭 할 때마다 fragments2.till의 TextView가 변경됩니다.다른 레이아웃을 가진 ListFragment

fragmetn1은 listView 용이고 fragment2는 DifferentView 용입니다.

이제 클릭하여 fragment2의 레이아웃을 변경하고 싶습니다. 예 : item2를 클릭하면 textView가있는 레이아웃이 fragment2에 설정됩니다. 이제 item3을 선택하면 Button과 다른 레이아웃이 fragment2로 설정되어야합니다.

내 getView 코드가 여기에 있습니다.

public void onListItemClick(ListView l, View v, int position, long id) { 

     DetailFrag frag = (DetailFrag) getFragmentManager().findFragmentById(R.id.frag_detail); 

     if (frag != null && frag.isInLayout()) { 
      frag.setText("item "+position+" selected"); 
     } 
    } 

이렇게하는 다른 방법은 plz도 도움이됩니다.

모든 제안은 강력하게 감사하겠습니다. 미리 감사드립니다.

enter image description here

답변

0

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

후 다음과 같은 구문이하여 FragmentTransaction에 조각을 추가 할 필요가 다음과 같은 방법을 시도해보십시오.

fragmentTransaction.replace(R.id.detailFragment, layout1); 

마지막으로 거래를 커밋해야합니다. 그렇지 않으면 변경 사항이 유지되지 않습니다.

fragmentTransaction.commit(); 

간단한 예는이 블로그 post을 참조하십시오. 나는 이것이 당신을 도울 수 있기를 바랍니다.

감사합니다.

0

내 의견으로는 다른 레이아웃을 사용하고 FragmentTransaction을 사용하여 기존 조각을 대체해야합니다.

0

당신의 접근 방법은 정상적으로 작동 할 수 있지만 ListFragment가 호스팅 활동에 항목이 클릭되었다는 사실을 알려주고 활동이 "다른"조각을 업데이트하도록 지시하는 경우 느슨하게 결합 된 방식을 사용하는 것이 좋습니다.

새 조각을 만들고 교체하는 것에 대해 걱정할 필요가 없습니다.

샘플 활동

public class TestActivity extends Activity implements TestFragmentBListener { 
    private TestFragmentA mOtherFragment; 
    private TestFragmentB mListFrag; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test); 
     mListFrag = (TestFragmentB) getFragmentManager().findFragmentById(R.id.fragment_b_list); 
     mOtherFragment = (TestFragmentA) getFragmentManager().findFragmentById(R.id.fragment_a_text); 
    } 

    @Override 
    public void onTestFragmentBItemCLicked(int position) { 
     // Implemented from TestFragmentB.TestFragmentBListener 
     mOtherFragment.setText("item " + position + " selected."); 
    } 
} 

샘플 FragmentA는 (텍스트를 포함 .. 이는 단지 예시 기능 없음)

public class TestFragmentA extends Fragment { 
    public void setText(String text) { 
    } 
} 

샘플에 대한 인터페이스를 정의 샘플 ListFragment 구현 활동

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".TestActivity" > 

    <fragment 
     android:id="@+id/fragment_a_text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <fragment 
     android:id="@+id/fragment_b_list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/fragment_a_text" /> 

</RelativeLayout> 
:

과 완전성을 위해서 36,, 여기에 샘플 활동에 대한 내 배치했다

관련 문제