2016-09-03 29 views
0

私は、axmlにデザイン時に埋め込まれたフラグメントを含むフラグメントに奇妙な問題があります。フラグメント内のXamarin埋め込みフラグメント

私は、FragmentManagerを使ってViewにロードしたフラグメントを終了し、FragmentManagerを使用しても削除したとき、暗黙的にロードされたフラグメントは自動的に破棄されますか?埋め込まれたフラグメントもまた消滅するように、親フラグメントをどのようにクリーンアップすべきですか?また、親フラグメントが破棄された場合、フラグメントレイアウトを削除するためにView.RemoveAllViews()を呼び出す必要がありますか?

答えて

0

これは動作するようです。フラグメントがリストにロードされるときにフラグメントをキャプチャし、後でメイン・フラグメントがアンロードされたときにそれらを削除します。 (廃棄する必要があります)

public partial class MainActivity : Activity 
{ 
    private LinearLayout LoaderLayout; 

    private readonly List<Fragment> ActiveFragments = new List<Fragment>(); 

    public override void OnAttachFragment(Fragment fragment) { ActiveFragments.Add(fragment); } 

    private async void ClearLoadFrame() 
    { 
     if(LoaderLayout == null) 
      LoaderLayout = FindViewById<LinearLayout>(Resource.Id.loaderLayout); 

     var Transaction = FragmentManager.BeginTransaction(); 

     foreach(var Frag in ActiveFragments) 
     { 
      Transaction.Remove(Frag); 
      Frag.Dispose(); 
     } 

     Transaction.CommitAllowingStateLoss(); 
     ActiveFragments.Clear(); 

     var Completed = false; 

     RunOnUiThread(() => 
     { 
      LoaderLayout.RemoveAllViews(); 
      Completed = true; 
     }); 

     await Task.Run(() => 
     { 
      while(!Completed) 
       Thread.Sleep(50); 
     }); 
    } 
+1

完全には固定されていません。今私は問題の逆を持っています。私がフラグメントを作成し、それを破棄して再作成しようとすると、埋め込まれたフラグメントがスローされ、例外は、破棄されたオブジェクトにアクセスできないということを意味します。 – Terry151151

0

私がしようとしていることは認められていません。

From this article

一つの制限は、ネストされた(または子)フラグメントが動的親フラグメントに実行時に追加されなければならず、静的にタグを使用して追加することができないということに注意してください。

関連する問題