为什么软键盘不会在WebView的Fragment中显示

|| 我使用的是兼容性包,我有一个
Fragment
,他在onCreateView中返回了
WebView
。问题是如果在
Activity
的onCreate期间未添加片段,则在
WebView
的内部单击文本框时,软键盘将不会显示。如果在添加了自定义Web片段之后旋转了设备,并重新创建了活动,则在单击文本字段时将显示软键盘。 为了清楚起见,这是两种不同的情况
public void onCreate(Bundle state){
   if(state == null){
      WebFragment web = new WebFragment();
      getSupportFragmentManager.beginTransaction().add(android.R.id.content, web).commit();
   }
}



public void onClick(View v){
      WebFragment web = new WebFragment();
      getSupportFragmentManager.beginTransaction().add(android.R.id.content, web).commit();
}
在第一种情况下,在Activity onCreate方法期间添加片段时,片段中包含的WebView可以按文本字段时的方式正常工作。但是,在第二个示例中,单击Web视图中的文本字段不会发生任何事情,除非在显示Web视图之后旋转设备。有人可以提供解决方案吗,如果我必须为片段创建一个新的活动以使其正常工作,那么它首先会达到片段的目的。
已邀请:
将此添加到片段的onCreateView方法中
webview.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_UP:
                if (!v.hasFocus()) {
                    v.requestFocus();
                }
                break;
        }
        return false;
    }
});  
经过android 2.3.3和3.2.0测试。 基于问题#7189和StackOverflow
同样,RuslanK的解决方案为我工作 创建一个扩展WebView的类
private class MyWebView extends WebView {

public MyWebView(Context context, AttributeSet attrs) {
    super(context, attrs);
 }

// Note this!
@Override
public boolean onCheckIsTextEditor() {
    return true;
}

@Override
public boolean onTouchEvent(MotionEvent ev)     {
    switch (ev.getAction())         {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_UP:
            if (!hasFocus())
                requestFocus();
        break;
    }

    return super.onTouchEvent(ev);
}
}
然后将您的视图添加到xml布局中:
<com.example.view.MyWebView
    android:id=\"@+id/vw\"
    android:layout_width=\"wrap_content\"
    android:layout_height=\"wrap_content\" />
依此类推,等等int代码...
MyWebView webView = (MyWebView) parent.findViewById(R.id.vw);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
webView.requestFocus(View.FOCUS_DOWN);
webView.loadUrl(url);

要回复问题请先登录注册