我在EditText
的OnCreateView
上将焦点侦听器附加到Fragment
。如果EditText
成为焦点,则通知监听者。到目前为止,一切都很好,但是当焦点重新放置在新的Fragment
上时,屏幕旋转后会再次通知侦听器。有什么好的做法来区分由于配置更改和实际的人机交互引起的侦听器通知?还是要防止由于配置更改而在焦点更改后完全通知侦听器?
问题很可能与在onViewStateRestored
调用中恢复焦点状态有关:https://developer.android.com/reference/android/app/Fragment.html#onViewStateRestored(android.os.Bundle)
为了避免收听此更改,只需在setOnFocusChangeListener
中调用onStart
,而不是onCreateView
。
[onStart
在onViewStateRestored
之后被调用,因此侦听器将不会收到初始通知。