これは動作するようです。フラグメントがリストにロードされるときにフラグメントをキャプチャし、後でメイン・フラグメントがアンロードされたときにそれらを削除します。 (廃棄する必要があります)
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);
});
}
完全には固定されていません。今私は問題の逆を持っています。私がフラグメントを作成し、それを破棄して再作成しようとすると、埋め込まれたフラグメントがスローされ、例外は、破棄されたオブジェクトにアクセスできないということを意味します。 – Terry151151