为什么 DialogPreference.needInputMethod() 被隐藏了?

Why is DialogPreference.needInputMethod() hidden?

根据DialogPreference.java

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 的子类仍然实现它:

我的问题:

  1. 为什么会有@hide
  2. 如果我要扩展 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 使用,而不是由其他人使用。