我正在添加一个功能,我的团队的应用程序将允许用户在2个不同的主屏幕之间进行选择。请注意,这两种屏幕都有不同的感觉。
我目前的设置是拥有2个独立的片段Home1Fragment和Home2Fragment,它们都扩展了一个名为HomeFragment的抽象类。默认情况下,用户将使用Home1Fragment,直到他们更改设置页面中的首选项。
我已经实现了这两个片段,并且如果它们独立作为主屏幕,它们都能正常工作。
当我尝试将它们从一个片段切换到另一个片段时,我的问题就存在了。我试过这个
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getFragmentManager();
if(fragmentManager.getBackStackEntryCount() > 1) {
fragmentManager.popBackStackImmediate();
int option = getSharedPreferences('**hidden**', MODE_PRIVATE).get('home_screen_option', 0);
Fragment fragment = fragmentManager.findFragmentById(R.id.content);
if(fragment != null && fragment instanceof HomeFragment) {
if(f instanceof Home1Fragment && option == HOME_2) {
f = new Home2Fragment();
} else if (f instanceof Home2Fragment && option == HOME_1) {
f = new Home1Fragment();
}
}
} else {
finish();
}
}
上面的代码中可能存在拼写错误,因为我是在没有实际代码的情况下动态编写的。
答案 0 :(得分:0)
您实际上并未在代码中设置新片段。
但我会选择一种基于已保存状态(例如共享首选项中的设置)的不同方法,并由主屏幕本身处理(而不是我提倡反向堆栈操作)。
选项1。
请考虑您的主屏幕是否可以单独Activity
。这样,您可以根据Activity
中存储的值,在SharedPreferences
启动时加载正确的片段。
选项2。
几乎相同的事情,只是使用嵌套片段。让您的主屏幕为Fragment
,并在其布局中为子片段添加容器。然后使用子片段管理器相应地加载正确的视图。