更新现有片段而不会闪烁

时间:2020-01-03 17:39:49

标签: android user-interface android-fragments xamarin xamarin.android

我有一个Support.V4.App.Fragment,每次调用OnResume时都会更新。当前,此更新以拥有AppCompatActivity的形式进行,使用其SupportFragmentManagerRemove现有Fragment(如果有),Replace Fragment的站点ID和新的Fragment,然后进行Commit更改:

var fragTrans = this.SupportFragmentManager.BeginTransaction();

// Remove existing Fragment
if (this.pcFrag != null)
{
    fragTrans.Remove(this.pcFrag);
}

// Make new Fragment
this.pcFrag = PassageContainerFragment.NewInstance(
    this.viewModel.SelectedTranslation,
    this.viewModel.RunningApp,
    this.viewModel.PassageContainer);

// Replace whatever is at Fragment site ID
fragTrans.Replace(Resource.Id.grpPassageContainer, this.pcFrag);

// Set up some fragment event handlers
this.pcFrag.ClickSelectTranslation += this.OnErrorShowingEvent(this.Frag_ClickSelectTranslation);
...

// Commit changes
fragTrans.Commit();

虽然此方法“有效”,但在UI消隐旧的Fragment并添加新的Fragment的地方出现了明显的闪烁。我希望能够在不破坏其View层次结构的情况下更新现有的Detach

注意:我见过一些方法,包括先AttachFragmentFragment,但这似乎对我不起作用-这个{{1} }有一个子Fragment,导致在子Fragment的{​​{1}}之前出现异常:“找不到片段ID 0x1的视图。”

在不干扰其OnCreateView层次结构的情况下,是否存在适当的方式来更新现有片段(例如,调用其OnResume)?

0 个答案:

没有答案