Hiding keyboard after calling new Activity that shows a ProgressDialog
Solution 1
Solved using a variation of the technique posted by phalt:
InputMethodManager im = (InputMethodManager) this.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
This code works correctly during onCreate
/onStart
/onResume
, since doesn't rely on a focused view to get the window token from.
Solution 2
Write this code in manifest.xml file for 'SecondActivity' Activity.
<activity name="EditContactActivity"
android:windowSoftInputMode="stateAlwaysHidden">
...
</activity>
Solution 3
you can use like this also:
InputMethodManager imm;
Write below line in onCreate() Method:
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
And this line is in onclick of button:
imm.hideSoftInputFromWindow(arg0.getWindowToken(), 0);
Example:
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
imm.hideSoftInputFromWindow(arg0.getWindowToken(), 0);
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}
Related videos on Youtube
Venator85
Updated on June 04, 2022Comments
-
Venator85 almost 2 years
I'm having trouble with the on screen keyboard. I have an activity with an
EditText
which shows the keyboard, and a button to go to a second activity. The second activity shows aProgressDialog
on itsonCreate()
, does stuff, and dismisses theProgressDialog
. The problem is that while theProgressDialog
is displayed, so is the keyboard.I would like the keyboard to disappear before creating the
ProgressDialog
. I searched thorougly both StackOverflow and other sites, but nothing seems to work with this particular scenario.I'm attaching two pics for your reference:
This is the code of the first activity:
public class FirstActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent); } }); } }
and this is the code of the second activity:
public class SecondActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); // TODO: hide keyboard here final ProgressDialog dialog = ProgressDialog.show(this, "", "Please wait...", true, false, null); // in real code, here there is an AsyncTask doing stuff... new Handler().postDelayed(new Runnable() { @Override public void run() { dialog.dismiss(); } }, 5000); } }
Thanks
-
Venator85 almost 12 yearsThis is not a viable option for me, as the layout of the second activity may include an EditText (determined by the result of the AsyncTask).
-
Venator85 almost 12 yearsThis normally works, but the second activity is in a library project, while the first activity is in another project using this library project. Thus, as I have no control on the first activity, the second activity must directly handle the keyboard hiding.
-
Venator85 almost 12 yearsCrashes the application with a NullPointerException since in onCreate (obviously after setContentView), onStart, and onResume there is no focused view yet.
-
phalt almost 12 yearsOkay, have you instead tried to set the keyboard as hidden in the activity manifest and then let is be shown afterwords through code? Edit: for example: take Krishna Suthar's reply below and then reverse my code so that the keyboard can be used.
-
Mark Freeman over 10 yearsI found this to be useful, so the keyboard would pop up when needed, but not automatically on loading the screen: android:windowSoftInputMode="stateHidden"
-
shaktiman_droid about 10 yearsThis will throw null pointer exception because it'll try to get current focus and it won't get one. Try running monkey script on your code. At one point, it might give you null pointer.
-
Odaym over 9 yearsneeds stateAlwaysHidden|adjustNothing not just stateAlwaysHidden