我试图在我的应用中实现辅助功能。我很困惑它如何实际工作。我从哪里发送事件在不同包装简单的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