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了。。。
有遇到过同样问题的欢迎一块交流