【问题标题】:The method getinstance(Context) is undefined for the type AccessibilityManager类型 AccessibilityManager 的方法 getinstance(Context) 未定义
【发布时间】:2013-08-08 06:32:28
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: android preference


    【解决方案1】:

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

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

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

    所以你真正需要的是Context。幸运的是,您有一个 View,它本身就是一个 Context,并包含对其父上下文的引用。

    【讨论】:

    • 完美!非常感谢 (:-)= 但是,我不明白为什么它不能以我的方式工作,因为我从 android src 获得了该代码,并且我可以在 AccessibilityManager 类中看到这个方法: public static AccessibilityManager getInstance (上下文上下文) { return sInstance; }。我的来源可能有问题吗?似乎一切都是最新的。再次感谢!
    • 是的,我正在查看谷歌开发的一些组件,当我在我的代码中尝试相同时,他们使用了 AccessibilityManager.getInstance(this.getContext()),但它不起作用
    • 同时从 android studio 打开 AccessibilityManager 类向我展示了这个 /** * 获取一个 AccessibilityManager 实例(如果需要,创建一个)。 * */ public static AccessibilityManager getInstance(Context context) { return sInstance; }
    【解决方案2】:

    此方法已被隐藏。 源码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多