2

我对 Android 的 Fragment 状态有疑问。我有一个片段,里面有 3 个搜索栏。在片段的底部有一个按钮,您可以使用该按钮进入下一个片段(使用片段事务)。现在,第一次创建片段时,这个“下一步”按钮被禁用。我希望用户在继续下一个片段之前先使用 3 个搜索栏。这一切都很好。但是,在某些情况下,用户可以通过使用后退按钮返回到上一个问题/片段。不幸的是,当我点击后退按钮时,“下一步”按钮的状态再次设置为禁用。对我来说这很奇怪,因为据我所知 Android 应该自动存储视图的状态。事实上:Android 确实存储了搜索栏的状态(位置)。

为什么 Android 会存储搜索栏的状态而不存储按钮的状态?该按钮在 XML 中被禁用,所以我不会在 onCreate 或类似的东西中以编程方式更改它。

任何人都知道为什么 Android 不记得按钮的状态(启用/禁用)?这几天让我发疯...

顺便说一句:我确实尝试使用 onSaveInstanceState 方法并将按钮的状态存储在包中,但是甚至从未调用过 onSaveInstanceState() 方法(因此包在 onCreate 中始终为空!)

编辑:

我的一些代码。首先,我启用按钮的方式(工作正常):

public void onStartTrackingTouch(SeekBar seekBar) {
    seekBar.setTag(true);
}

public void onStopTrackingTouch(SeekBar seekBar) {      
    if (happyBar.getTag().equals(true) && relaxedBar.getTag().equals(true) && awakeBar.getTag().equals(true)) {
        nextButton.setEnabled(true);
    }
}

这就是我过渡到下一个片段的方式:

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.fragmentcontainer, fragment);
ft.addToBackStack(null);
ft.commit();

按钮的初始状态在 XML 中设置为 enabled=false。我不得不说,根据 Eclipse,按钮的启用 XML 属性已被弃用,但我在互联网上读到这是一个错误,因为它根本没有被弃用。这就是我继续使用它的原因。

希望这可以帮助!

4

0 回答 0