 <p>I have same problem I solved so:</p> <p>first create a class KeyBoardManager:</p> <pre><code>import android.content.Context; import android.os.Handler; import android.view.inputmethod.InputMethodManager; public class KeyBoardManager { public KeyBoardManager(Context context) { final Handler handler = new Handler(); final InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); new Thread(new Runnable() { @Override public void run() { while(true){ try{Thread.sleep(100);}catch (Exception e) {} handler.post(new Runnable() { @Override public void run() { if(!imm.isAcceptingText()){ imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS); } } }); } } }).start(); } } </code></pre> <p>and in method onCreate of first activity you create a new instance of KeyBoardManager like:</p> <pre><code>public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new KeyBoardManager(this); } } </code></pre> <p>and when your edittext is draw in screen for the firs time you call:]</p> <pre><code>(new Handler()).postDelayed(new Runnable() { editText.requestFocus(); editText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0)); editText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0)); }, 200); </code></pre>