DispatchKeyEvent:确定getCurrentFocus视图的确切类型
问题描述:
我有一个自定义的活动组,该视图添加视图并将其删除到堆栈。DispatchKeyEvent:确定getCurrentFocus视图的确切类型
我覆盖dispatchKeyEvent
检查某些按下的键。
的问题是,我需要检查这样的电流集中视图类型:
View v=getCurrentFocus();
当我检查的视图的类型, 它返回一个类型这样
com.android.internal.policy.impl.PhoneWindow$DecorView
这是什么类型,我可以将任何类对象转换为此类型?
谢谢
答
不,你不能只是将任何类对象转换为这种类型!最佳做法是,你只应该建立类层次结构,或者如果你真的必须抛弃,首先使用instanceof操作符检查类型。
另外,根据包名来判断它是一个内部的android类,所以你不想在你的代码中引用任何引用 - 如果它是内部的,那就不是api。他们可以在任何时候改变它,你的应用程序会立即被破坏。
你为什么要检查视图的类型? 您是否在寻找特定类型? 如果是这样,它是更安全的(例如)做:
View v = getCurrentFocus();
if(v instanceof SomeView){
//do stuff
}
,或者如果它的装修风格视图中,您有兴趣使用getDecorView代替getCurrentFocus。
感谢Kett,但我收到的意见类型,装饰视图,有时是正常的textview或edittext,所以我正在寻找一个标准来区分这些 – 2011-03-27 18:50:11
,所以你关心什么类型的视图? – katsharp 2011-03-27 18:51:54
我想采取一定的行动,如果视图DecorView – 2011-03-27 18:53:36