6

我正在尝试创建自己的 ImagePreference,我将在我的应用程序偏好设置中使用它来选择用户选择代表自己的图片。

我不太确定我在做什么,但基本上我在模仿其他一些偏好类。到目前为止,我只在使用这种方法时遇到了问题:

public class ImagePreference extends Preference {
...
    void sendAccessibilityEvent(View view) {
        // Since the view is still not attached we create, populate,
        // and send the event directly since we do not know when it
        // will be attached and posting commands is not as clean.
        AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(getContext());
        if (mSendClickAccessibilityEvent && accessibilityManager.isEnabled()) {
            AccessibilityEvent event = AccessibilityEvent.obtain();
            event.setEventType(AccessibilityEvent.TYPE_VIEW_CLICKED);
            view.onInitializeAccessibilityEvent(event);
            view.dispatchPopulateAccessibilityEvent(event);
            accessibilityManager.sendAccessibilityEvent(event);
        }
        mSendClickAccessibilityEvent = false;
    }

我刚刚从 TwoStatePreference 类中复制了这段代码。我什至不确定我是否需要这个方法,但是编译器抱怨说 AccessibilityManager 类不包含 getInstance 方法。

我认为这可能是导入的问题,但我正在导入与 TwoStatePreference 相同的类,即:

import android.view.accessibility.AccessibilityManager;

我已经因为这个问题失去了几个小时。知道编译器为什么抱怨吗?

谢谢!

4

2 回答 2

9

实际上,AccessibilityManager该类没有调用方法getInstance()从文档:

要获得可访问性管理器的句柄,请执行以下操作:

AccessibilityManager accessibilityManager =
    (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);

所以你真正需要的是一个Context. 幸运的是,你有 a View,它本身就是 a Context,并且持有对它的父上下文的引用。

于 2013-08-08T15:04:37.017 回答
7

这个方法被隐藏了。 源代码:

 /**
 * Get an AccessibilityManager instance (create one if necessary).
 *
 * @param context Context in which this manager operates.
 *
 * @hide
 */
public static AccessibilityManager getInstance(Context context)
于 2016-03-24T03:57:10.767 回答