2013-08-08 5 views
3

Я пытаюсь создать свой собственный ImagePreference, который я буду использовать в настройках моего приложения, чтобы выбрать изображение, которое пользователь хочет представить себе.Метод getinstance (Контекст) не определен для типа AccessibilityManager

Я не слишком уверен в том, что я делаю, но в основном я имитирую некоторые другие классы предпочтений. До сих пор я только возникают проблемы с этим методом:

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

Действительно, класс AccessibilityManager не имеет метода под названием getInstance(). From the docs:

Чтобы получить дескриптор менеджера доступности выполните следующие действия:

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

Так на самом деле все, что вам нужно, это Context. К счастью, у вас есть View, который сам является Context и содержит ссылки на его родительские контексты.

+0

Отлично! Большое спасибо (: -) = Тем не менее, я не понимаю, почему это не сработало на моем пути, так как я получил этот код из sroid sroid, и я вижу этот метод в классе AccessibilityManager: public static AccessibilityManager getInstance (Контекстный контекст) {return sInstance; }. Могу ли я иметь некоторые проблемы с моими источниками? Кажется, все в курсе. Еще раз спасибо! – ivansiiito

+0

Да, я смотрел на некоторые компоненты, разработанные Google, они использовали AccessibilityManager.getInstance (this.getContext()), когда я пробовал то же самое в своем коде, что он не работает –

+0

Также открытие класса AccessibilityManager из студии android показало мне это/* * * Получите экземпляр AccessibilityManager (при необходимости создайте его). * */ public static AccessibilityManager getInstance (контекстный контекст) { return sInstance; } –

5

Этот метод был скрыт. Исходный код:

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