gpt4 book ai didi

android - 替换 fragment 的最佳方法

转载 作者:太空狗 更新时间:2023-10-29 14:13:18 26 4
gpt4 key购买 nike

我对让单个 Activity 在 fragment 之间切换的最佳方式很感兴趣。

例如,如果我使用此处显示的抽屉导航:http://developer.android.com/training/implementing-navigation/nav-drawer.html , 每次点击抽屉列表中的项目都被称为:

/** Swaps fragments in the main content view */
private void selectItem(int position) {
// Create a new fragment and specify the planet to show based on position
Fragment fragment = new PlanetFragment();
Bundle args = new Bundle();
args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
fragment.setArguments(args);

// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();

// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}

所以每次(即使用户转到之前显示的 fragment )都会创建一个新 fragment ,然后它会替换当前 fragment 。有没有更好的办法?例如重用 fragment 实例,或类似的东西?

最佳答案

是的,

您可以在 PlanetFragment 中创建一个公共(public)方法来设置位置并更新 UI。

private void selectItem(int position) {
PlanetFragment planet = (PlanetFragment) getFragmentManager().findFragmentById(R.id.content_frame);

if(planet != null) {
planet.setPosition(position);
}
}

但是,您的原始解决方案应该没问题。 fragment 事务很快,是时候实现更新 UI 的逻辑了。在大多数情况下,重新创建整个 fragment 会更容易,就像您这样做一样。

考虑这种方法,如果 Fragment 需要长时间初始化,这会导致进度条和延迟(在 UI 中)。这样您就可以避免重新启动,因此可以只更新状态(在本例中为位置)。

关于android - 替换 fragment 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24913016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com