android-监听器在屏幕方向改变时丢失

时间:2013-09-25 18:14:32

标签: java android android-layout

我有ListFragment,点击它后会打开Activity。现在,我的问题是我的听众在旋转屏幕时迷路了。点击事件不响应。我试过android:configChanges,它修复了监听器问题,但整个活动的布局看起来很奇怪。是否有任何可能的解决方案在配置更改时再次设置侦听器?

1 个答案:

答案 0 :(得分:0)

最佳解决方案:使用onSaveInstanceState()处理问题的更好方法。请参阅此链接Handling Runtime Changes

No.2:您可以检测到更改,然后通过以下方法处理:

public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);

// Checks the orientation
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    Toast.makeText(this, "landscape mode", Toast.LENGTH_SHORT).show();
} else if (config.orientation == Configuration.ORIENTATION_PORTRAIT){
    Toast.makeText(this, "portrait mode", Toast.LENGTH_SHORT).show();
  }
}

强制解决方案:如果您不希望在方向更改时回收活动生命周期,则可以在清单中添加:

<activity android:name=".YourActivity"
      android:configChanges="orientation|keyboardHidden"
      android:label="@string/app_name">

最后一个是最糟糕的解决方案,但有效。 因为我的建议从不使用最后一个因为你将来无法做任何类型的回收。但是为了紧急解决它的好处。