您好,
我有一些Spinner对象,选中后会更改EditText
和Button的内容。一切正常,直到我打开和关闭屏幕。
我使应用程序方向仅限于景观,因此在打开和关闭屏幕时会导致活动被破坏。
这里出现的问题是我丢失了Spinner,EditText和Button对象的所有状态信息
因此,我尝试使用onSaveInstanceState
和onRestoreInstanceState
方法解决此问题,方法是按顺序设置Spinner,Button和EditText的状态。
问题是,由于某种原因,在我恢复Button和EditText的状态后调用onItemSelected
方法,因此它们被设置为默认值。
我尝试暂时禁用onItemSelected侦听器,但是一旦我再次启用它们,就会调用onItemSelected方法并重置Button和EditText状态。
注意:我只想在应用程序被系统杀死后恢复状态,而不是用户。
答案 0 :(得分:0)
您可以创建一个全局布尔变量,并在还原时将其设置为true。在onItemSelected中,您可以检查此变量,如果为true,则不会更改button和editText内容,只需将此变量设置为false即可。 在onRestoreInstaceState:
wasRestored = true;
在onItemSelected:
if(wasRestored){
wasRestored=false;
return;
} else {//change editText and Button content}