2015-07-10 84 views
0

如何在片段启动时打开键盘?我已经试过这个代码:如何在片段中打开键盘

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    view =inflater.inflate(R.layout.mylayout,container,false); 
    TextView TVLarghezza = (TextView) view.findViewById(R.id.larghezza); 
    TVLarghezza.requestFocus(); 
    InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
    imgr.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT); 
    return view; 
} 

但它不起作用。我必须在启动时打开键盘。

回答

2

也许问题是,在onCreateView,视图尚未在屏幕上。

尝试这种情况:

final TextView TVLarghezza = (TextView) view.findViewById(R.id.larghezza); 
TVLarghezza.post(new Runnable() { 
     @Override 
     public void run() { 
      TVLarghezza.requestFocus(); 
      InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
      imgr.showSoftInput(TVLarghezza, InputMethodManager.SHOW_IMPLICIT); 
      } 
     }); 
0

对于显示出键盘使用:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 

用于隐藏键盘使用:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(view.getWindowToken(),0); 

修订
对于片段:

imgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 
+0

我已经已经尝试过这种方法,但他们只在活动上工作,而不是在片段 – Damien

+0

@Damien,我已经更新了答案 – Alexander

0

有同样的问题,尝试在启动时使用postDelayed

view.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      InputMethodManager keyboard = (InputMethodManager) mAppContext 
        .getSystemService(Context.INPUT_METHOD_SERVICE); 
      keyboard.showSoftInput(view, 0); 
     } 
    }, 100); 
0

使用requestFocus的标签以XML为开放式键盘在片段.. 如..

<EditText 
    android:id="@+id/edPswrd" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:inputType="textPassword" > 

    <requestFocus /> 
</EditText>