我想在更宽的屏幕上使用多窗格布局。数据以SQL
保留,每个片段都会获取正确的数据。额外的布局xml文件位于资源目录文件夹中。(即layout-w500dp)
但我有一些奇怪的行为。
在我选择了某些内容之后似乎只能工作,然后按后退按钮。
Atm我使用最多两个FrameLayouts但后来我想用四个来做。
我检查最深选择的级别并相应地分配片段。 (这里只有lvl 1,但后来我需要选择lvl3)。
这是我想要实现的目标。
这会在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();
}
如果我执行以下操作,它目前才有效。
为什么我会出现这种行为?
这是第一个正确的方法吗?
考虑到我想将其扩展到更多级别和screenWidths!
即:
这里会正确地进行后备功能吗?如果有人需要其他信息,请说出来,我很乐意添加它!
答案 0 :(得分:0)
愚蠢的错误。我将选择保存在应用程序类中,并在onCreate
中实例化,但我需要在getLowestSelection()
方法中获取当前选择之前进行实例化