开发者

DispatchKeyEvent: determine the exact type of the getCurrentFocus view

I have a custom activitygroup that adds and removes views to the stack.

I override the dispatchKeyEvent to check for certain keys pressed.

the problem is that I need to check the type of the current focused view like this:

View v=getCurrentFocus();

when I check for the type of the view, it returns a type like this

 com.android.internal.policy.impl.PhoneWindow$DecorView

what is this type and can I cast any class object to this ty开发者_JAVA技巧pe ?

thanks


No you can't just cast any class object to this type! Best practice is that you should only ever cast up the class hierarchy, or if you really must cast down make sure you check the type first using the instanceof operator.

Also, judging by the package name it's an internal android class, so you do not want any references to that in your code - if it's internal, it's non api. They could change it at any point and your app would immediately be broken.

Why are you checking the type of the view? Are you looking for a particular type? If so, it's be safer to do (for example):

View v = getCurrentFocus();
if(v instanceof SomeView){
//do stuff
}

Or if it is the decor view you are interested in use getDecorView instead of getCurrentFocus .

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜