2013-09-05 6 views
5

İlk (pageNews) ile ikinci (pageViewFromWeb) arasındaki parçaları değiştirdikten sonra "findFragmentById", ilk (pageNews) parçacığına bir başvuru döndürüyor?FragmentLyout öğesinin yerini almak için aramadan önceki eski fragmanın findFragmentById değeri neden döndürülüyor?

düzen:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" 
    android:paddingTop="10dp" 
    android:background="#000"> 

    <FrameLayout 
     android:id="@+id/frgmCont" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#000000"> 
    </FrameLayout> 

</RelativeLayout> 

kodu: hemen yürütmek değil, ama FragmentTransaction planlanıyor

fTrans = getSupportFragmentManager().beginTransaction(); 
    fTrans.add(R.id.frgmCont, pageNews); 
    .... 
    ....  
    public void selectNews(String news_id) { 
    // Toast.makeText(this, news_id, Toast.LENGTH_SHORT).show(); 
    fTrans = getSupportFragmentManager().beginTransaction(); 
    fTrans.replace(R.id.frgmCont, pageViewFromWeb); 
    fTrans.commit(); 
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frgmCont); 
    ... 
} 
+3

Lütfen, ['FragmentTransaction'] belgelerine bakın (http://developer.android.com/reference/android/app/FragmentTransaction.html# taahhüt()). commit(), işlemi yalnızca bir süre sonra tamamlamak üzere planlar ve hemen engellemez veya başka bir şekilde çalışmaz. ['FragmentManager.executePendingTransactions()'] 'a bakabilirsiniz (http://developer.android.com/reference/android/app/FragmentManager.html#executePendingTransactions()). – JuniKim

+0

Teşekkürler! Çalışıyor. –

cevap

2

Onun replace() çünkü. Parçaları değiştirdikten hemen sonra, findFragmentById()'u değiştirdiğinizde, bunlar henüz değiştirilmemiştir ...

İlgili konular