我希望在更宽的屏幕上使用多窗格布局。数据使用
目前只有按以下步骤才能正常工作:
1. 启动应用程序=在纵向和横向中各有一个片段(这是期望的行为)。 2. 在纵向中进行选择=什么都不会发生!!!!(这就是问题所在) 3. 切换到横向=2个具有正确选择的片段(正确的行为)(如果我在横向中进行初始选择,则需要旋转到纵向,然后再旋转回来)。 4. 切换到纵向=LvL 2带有正确数据的片段(正确的行为)。 5. 按下返回按钮=LvL 1片段(正确的行为)。 6. 从现在开始,我可以在纵向和横向方向之间切换,并且在所有方向上选择项目时都会得到正确的行为。即使在横向上按下返回键时,也只显示一个带有lvl 1的片段,当选择被删除时。
为什么会出现这种行为?这是否是首先正确的方法?考虑到我想要扩展到更高级别和屏幕宽度!例如:
这里的返回堆栈是否能正常工作?如果有人需要额外的信息,请告诉我,我很乐意添加它!
SQL
进行持久化,每个片段都获取正确的数据。额外的布局xml文件位于资源目录文件夹中(即layout-w500dp)。但是我遇到了一些奇怪的行为。只有在我选择某些内容然后按下返回按钮后,它才能正常工作。目前,我最多使用两个FrameLayouts,但以后我想使用四个。我检查最深层次选择的级别,并相应地分配片段。(这里仅到第1级,但以后我需要选择达到第3级)。这是我想要实现的效果。
这在onCreate
和选择后被调用。
private void setScreens(){
int i = getLowestSelection();//returns 0 when nothing is selected.
//And 1 if selection is made in lvl1 ...
int p = 1;
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (findViewById(R.id.fragtwo) != null) {
p = 2;
if (i == 1){
SectionsScreen secondFragment = new SectionsScreen();
transaction.replace(R.id.fragtwo,secondFragment);
}
}
if (findViewById(R.id.fragone) != null) {
if(p == 2){
if (i == 0 ){
StatuteScreen statuteScreenFragment = new StatuteScreen();
transaction.replace(R.id.fragone,statuteScreenFragment);
}
}
if (p == 1){
if (i == 0){
StatuteScreen statuteScreenFragment = new StatuteScreen();
transaction.replace(R.id.fragone,statuteScreenFragment);
}
else if (i == 1){
SectionsScreen sectionsScreenFragment = new SectionsScreen();
transaction.replace(R.id.fragone,sectionsScreenFragment);
}
}
}
transaction.addToBackStack(null);
transaction.commit();
}
目前只有按以下步骤才能正常工作:
1. 启动应用程序=在纵向和横向中各有一个片段(这是期望的行为)。 2. 在纵向中进行选择=什么都不会发生!!!!(这就是问题所在) 3. 切换到横向=2个具有正确选择的片段(正确的行为)(如果我在横向中进行初始选择,则需要旋转到纵向,然后再旋转回来)。 4. 切换到纵向=LvL 2带有正确数据的片段(正确的行为)。 5. 按下返回按钮=LvL 1片段(正确的行为)。 6. 从现在开始,我可以在纵向和横向方向之间切换,并且在所有方向上选择项目时都会得到正确的行为。即使在横向上按下返回键时,也只显示一个带有lvl 1的片段,当选择被删除时。
为什么会出现这种行为?这是否是首先正确的方法?考虑到我想要扩展到更高级别和屏幕宽度!例如:
这里的返回堆栈是否能正常工作?如果有人需要额外的信息,请告诉我,我很乐意添加它!