首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

FragmentTabHost焦点有关问题

2013-07-09 
FragmentTabHost焦点问题FragmentTabHost有很多问题FragmentTabHost当时设计的时候选择了继承TabHost,TabH

FragmentTabHost焦点问题
FragmentTabHost有很多问题
FragmentTabHost当时设计的时候选择了继承TabHost,TabHost的原理是当点击TabWidget的时候,把tabcontent的内容设置成tabspec里设置的indicator,

View tabIndicator = tabSpec.mIndicatorStrategy.createIndicatorView();

然后
tabIndicator.setOnKeyListener(mTabKeyListener);

再看看这个mTabKeyListener
        mTabKeyListener = new OnKeyListener() {            public boolean onKey(View v, int keyCode, KeyEvent event) {                switch (keyCode) {                    case KeyEvent.KEYCODE_DPAD_CENTER:                    case KeyEvent.KEYCODE_DPAD_LEFT:                    case KeyEvent.KEYCODE_DPAD_RIGHT:                    case KeyEvent.KEYCODE_DPAD_UP:                    case KeyEvent.KEYCODE_DPAD_DOWN:                    case KeyEvent.KEYCODE_ENTER:                        return false;                }                mTabContent.requestFocus(View.FOCUS_FORWARD);                return mTabContent.dispatchKeyEvent(event);            }

mTabContent是TabHost装载内容的container(是个FramLayout),从上面的代码可以看出,当点击tab的一个item的时候,tabhost将设置的内容放到tabcontent中,然后给这个内容view放上一个keyListener
而fragmentTabHost是将内容放置到指定的container中(不是TanHost使用的android.R.tabcontent,FragmentTabHost会使用一个Dummy什么Factory将android.R.tabcontent放一个空view),导致的问题是在输入的时候如果切换输入法,FragmentTabHost当前的Fragment中的View会丢失焦点,导致输入不进去

怎么解决。。。我试了些办法都不好用,无奈之下就自己写tabhost了。。。

有遇到过同样问题的欢迎一块交流

热点排行