我的Android片段状态存在问题。我有一个包含3个搜索栏的片段。在片段的底部有一个按钮,您可以使用该按钮继续下一个片段(使用片段事务)。现在,首次创建片段时,此“下一步”按钮被禁用。我希望用户在进入下一个片段之前首先使用3个搜索栏。一切正常。但是,在某些情况下,用户可以使用后退按钮返回上一个问题/片段。不幸的是,当我按下后退按钮时,“下一步”按钮的状态再次被设置为禁用状态。对我来说这很奇怪,因为据我所知,Android应该自动存储视图的状态。事实上:Android确实存储了搜索栏的状态(位置)。
为什么Android会存储搜索栏的状态而不是按钮的状态?该按钮在XML中被禁用,因此我不会在onCreate或类似的内容中以编程方式更改它。
任何人都知道为什么Android无法记住按钮的状态(启用/禁用)?这让我疯了几天......
BTW:我确实尝试使用onSaveInstanceState方法并将按钮的状态存储在bundle中,但是onSaveInstanceState()方法永远不会被调用(因此onCreate中的bundle总是空的!)
修改
我的一些代码。首先,我启用按钮的方式(工作正常):
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属性已被弃用,但我在互联网上读到这是一个错误,因为它根本没有被弃用。这就是我继续使用它的原因。
希望这有帮助!