我試圖在我的應用中實現輔助功能。我很困惑它如何實際工作。我從哪裏發送事件在不同包裝簡單的ImageView:dispatchPopulateAccessibilityEvent未觸發
public final void onClick(final android.view.View v) {
android.util.Log.v(CLASSNAME,"onClick tag:"+v.getTag());
v.sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent.TYPE_VIEW_CLICKED);
我implmented輔助類,如下所示:
import android.content.Context;
public final class Accessibility extends android.view.View {
public Accessibility(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public static android.view.accessibility.AccessibilityManager manager = (android.view.accessibility.AccessibilityManager)getSystemService(android.content.Context.ACCESSIBILITY_SERVICE);
public static android.view.accessibility.AccessibilityEvent event = android.view.accessibility.AccessibilityEvent.obtain();
public static Accessibility accessibility;
public static boolean isEenabled()
{
if(manager.isEnabled())
return true;
else
return false;
}
@Override
public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent event)
{
super.dispatchPopulateAccessibilityEvent(event);
android.util.Log.e(CLASSNAME, "Came here");
{
event.getText().add("Click here!!");
event.setEnabled(true);
return true;
}
我讀的開發者文檔,我不得不重寫方法在View類中(這就是我將我的類擴展到View的原因)。我意識到這種方法也存在於Activity類中(即extends Activity),它甚至不發送任何事件就調用這個方法。
我知道我在做一些愚蠢的事情,但無法找到確切的地方。
PS:我沒上設置斷點,v.sendAccessibilityEvent - 它道出View.java和不知何故,在條件「AccessibilityManager.getInstance(mContext)!= NULL」
謝謝,但類Activity和類View的dispatchPopulateAccessibility方法有什麼區別? – Papps
基本上他們服務於相同的目的。該方法在傳遞給系統之前處理AccessibilityEvents(各種類型的,不僅是單擊事件),也可以先處理事件源子項。差異將是事件的來源。 –
謝謝。我在實施第一步時仍遇到問題。如果可能的話,我是否可以在代碼本身中展示如何去做?我很抱歉,但過去三天我被困在這裏。 – Papps