对于AccessibilityManager类型,方法getinstance(Context)未定义

时间:2013-08-08 06:32:29

标签: android preference

我正在尝试创建自己的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;

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

谢谢!

2 个答案:

答案 0 :(得分:5)

实际上,AccessibilityManager类没有名为getInstance()的方法。 From the docs:

  

要获取辅助功能管理器的句柄,请执行以下操作:

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

所以你需要的只是一个Context。幸运的是,你有一个View,它本身就是Context,并且保存了对它的父上下文的引用。

答案 1 :(得分:4)

此方法已被隐藏。 源代码:

 /**
 * Get an AccessibilityManager instance (create one if necessary).
 *
 * @param context Context in which this manager operates.
 *
 * @hide
 */
public static AccessibilityManager getInstance(Context context)