恢复应用程序状态后不需要的onItemSelected调用

时间:2012-11-20 14:33:55

标签: android spinner listener state restore

您好,
我有一些Spinner对象,选中后会更改EditText和Button的内容。一切正常,直到我打开和关闭屏幕。
 我使应用程序方向仅限于景观,因此在打开和关闭屏幕时会导致活动被破坏。

这里出现的问题是我丢失了Spinner,EditText和Button对象的所有状态信息 因此,我尝试使用onSaveInstanceStateonRestoreInstanceState方法解决此问题,方法是按顺序设置Spinner,Button和EditText的状态。
问题是,由于某种原因,在我恢复Button和EditText的状态后调用onItemSelected方法,因此它们被设置为默认值。
我尝试暂时禁用onItemSelected侦听器,但是一旦我再次启用它们,就会调用onItemSelected方法并重置Button和EditText状态。

注意:我只想在应用程序被系统杀死后恢复状态,而不是用户。

1 个答案:

答案 0 :(得分:0)

您可以创建一个全局布尔变量,并在还原时将其设置为true。在onItemSelected中,您可以检查此变量,如果为true,则不会更改button和editText内容,只需将此变量设置为false即可。 在onRestoreInstaceState:

wasRestored = true;

在onItemSelected:

if(wasRestored){
   wasRestored=false;
   return;
} else {//change editText and Button content}