diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java index 509fd2dc8..59c9b07a9 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java @@ -118,7 +118,7 @@ public class SetPasswordFragment extends SetupFragment { @Override public void onClick(View view) { IBinder token = passwordEntry.getWindowToken(); - Object o = getContext().getSystemService(INPUT_METHOD_SERVICE); + Object o = requireContext().getSystemService(INPUT_METHOD_SERVICE); ((InputMethodManager) o).hideSoftInputFromWindow(token, 0); viewModel.setPassword(passwordEntry.getText().toString()); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java index e0df4a520..076cd4a10 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java @@ -20,15 +20,14 @@ import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_TASK_ON_HOME; -import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; -import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE; -import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN; import static org.briarproject.briar.android.BriarApplication.ENTRY_ACTIVITY; import static org.briarproject.briar.android.account.SetupViewModel.State.AUTHOR_NAME; import static org.briarproject.briar.android.account.SetupViewModel.State.CREATED; import static org.briarproject.briar.android.account.SetupViewModel.State.DOZE; import static org.briarproject.briar.android.account.SetupViewModel.State.FAILED; import static org.briarproject.briar.android.account.SetupViewModel.State.SET_PASSWORD; +import static org.briarproject.briar.android.util.UiUtils.setInputStateAlwaysVisible; +import static org.briarproject.briar.android.util.UiUtils.setInputStateHidden; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -58,13 +57,13 @@ public class SetupActivity extends BaseActivity private void onStateChanged(SetupViewModel.State state) { if (state == AUTHOR_NAME) { - showKeyboard(); + setInputStateAlwaysVisible(this); showInitialFragment(AuthorNameFragment.newInstance()); } else if (state == SET_PASSWORD) { - showKeyboard(); + setInputStateAlwaysVisible(this); showPasswordFragment(); } else if (state == DOZE) { - hideKeyboard(); + setInputStateHidden(this); showDozeFragment(); } else if (state == CREATED || state == FAILED) { // TODO: Show an error if failed @@ -90,16 +89,6 @@ public class SetupActivity extends BaseActivity overridePendingTransition(R.anim.screen_new_in, R.anim.screen_old_out); } - private void showKeyboard() { - getWindow().setSoftInputMode(SOFT_INPUT_ADJUST_RESIZE | - SOFT_INPUT_STATE_ALWAYS_VISIBLE); - } - - private void hideKeyboard() { - getWindow().setSoftInputMode(SOFT_INPUT_ADJUST_RESIZE | - SOFT_INPUT_STATE_HIDDEN); - } - @Override @Deprecated public void runOnDbThread(Runnable runnable) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index e89b07100..aa77231d7 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -2,6 +2,7 @@ package org.briarproject.briar.android.util; import android.annotation.SuppressLint; import android.annotation.TargetApi; +import android.app.Activity; import android.app.KeyguardManager; import android.content.ActivityNotFoundException; import android.content.Context; @@ -90,6 +91,9 @@ import static android.text.format.DateUtils.WEEK_IN_MILLIS; import static android.text.format.DateUtils.YEAR_IN_MILLIS; import static android.view.KeyEvent.ACTION_DOWN; import static android.view.KeyEvent.KEYCODE_ENTER; +import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; +import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE; +import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN; import static android.view.inputmethod.EditorInfo.IME_NULL; import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT; import static android.widget.Toast.LENGTH_LONG; @@ -537,4 +541,14 @@ public class UiUtils { Toast.makeText(context, msg, LENGTH_LONG).show(); }); } + + public static void setInputStateAlwaysVisible(Activity activity) { + activity.getWindow().setSoftInputMode(SOFT_INPUT_ADJUST_RESIZE | + SOFT_INPUT_STATE_ALWAYS_VISIBLE); + } + + public static void setInputStateHidden(Activity activity) { + activity.getWindow().setSoftInputMode(SOFT_INPUT_ADJUST_RESIZE | + SOFT_INPUT_STATE_HIDDEN); + } }