为什么 DialogPreference.needInputMethod() 被隐藏了?
Why is DialogPreference.needInputMethod() hidden?
Returns whether the preference needs to display a soft input method when the dialog
is displayed. Default is false. Subclasses should override this method if they need
the soft input method brought up automatically.
但是,它有 @hide
标签,在 SDK 中不可见。尽管如此,DialogPreference
的子类仍然实现它:
- EditTextPreference.java(其中还有
@hide
)
我的问题:
- 为什么会有
@hide
?
- 如果我要扩展
DialogPreference
并希望显示软键盘,我应该实现吗?
作为一般经验法则,不应实施隐藏的 API。
原因可能是 API 正在开发中,可能会更改,API 仅供内部使用,不稳定等...
在这种情况下,EditTextPreference.java class 直接调用此方法是正确的,但您不应该得出结论说这意味着其他子class 应该这样做一样。
事实上,如果您检查将此方法添加到 class 的开发人员的提交消息,您会看到:
changeset: 1d458570757e607f0dc11fb0e963017916ac0701
summary: Show keyboard automatically in EditTextPreferences dialogs
User: ...
Date: Tue Sep 15 19:25:51 CEST2009
因此,此方法似乎打算 由 EditTextPreferences 使用,而不是由其他人使用。
Returns whether the preference needs to display a soft input method when the dialog is displayed. Default is false. Subclasses should override this method if they need the soft input method brought up automatically.
但是,它有 @hide
标签,在 SDK 中不可见。尽管如此,DialogPreference
的子类仍然实现它:
- EditTextPreference.java(其中还有
@hide
)
我的问题:
- 为什么会有
@hide
? - 如果我要扩展
DialogPreference
并希望显示软键盘,我应该实现吗?
作为一般经验法则,不应实施隐藏的 API。 原因可能是 API 正在开发中,可能会更改,API 仅供内部使用,不稳定等...
在这种情况下,EditTextPreference.java class 直接调用此方法是正确的,但您不应该得出结论说这意味着其他子class 应该这样做一样。
事实上,如果您检查将此方法添加到 class 的开发人员的提交消息,您会看到:
changeset: 1d458570757e607f0dc11fb0e963017916ac0701
summary: Show keyboard automatically in EditTextPreferences dialogs
User: ...
Date: Tue Sep 15 19:25:51 CEST2009
因此,此方法似乎打算 由 EditTextPreferences 使用,而不是由其他人使用。