diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/activity/AbstractActivity.java | 10 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/activity/Keyboard.java | 40 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/EditNoteDialog.java | 13 |
3 files changed, 56 insertions, 7 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java index 36b6d01..510969b 100644 --- a/main/src/cgeo/geocaching/activity/AbstractActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java @@ -7,12 +7,10 @@ import cgeo.geocaching.compatibility.Compatibility; import cgeo.geocaching.network.Cookies; import cgeo.geocaching.settings.Settings; -import android.content.Context; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.View; -import android.view.inputmethod.InputMethodManager; import android.widget.EditText; public abstract class AbstractActivity extends FragmentActivity implements IAbstractActivity { @@ -96,7 +94,7 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst // create view variables ButterKnife.inject(this); } - + private void initializeCommonFields() { // initialize commonly used members res = this.getResources(); @@ -116,6 +114,10 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst } protected void hideKeyboard() { - ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); + new Keyboard(this).hide(); + } + + public void showKeyboard(final View view) { + new Keyboard(this).show(view); } } diff --git a/main/src/cgeo/geocaching/activity/Keyboard.java b/main/src/cgeo/geocaching/activity/Keyboard.java new file mode 100644 index 0000000..9bae7be --- /dev/null +++ b/main/src/cgeo/geocaching/activity/Keyboard.java @@ -0,0 +1,40 @@ +package cgeo.geocaching.activity; + +import org.eclipse.jdt.annotation.NonNull; + +import android.app.Activity; +import android.content.Context; +import android.view.View; +import android.view.inputmethod.InputMethodManager; + +/** + * Class for hiding/showing the soft keyboard on Android. + * + */ +public class Keyboard { + private final Activity activity; + + public Keyboard(final @NonNull Activity activity) { + this.activity = activity; + } + + public void hide() { + ((InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); + } + + public void show(final View view) { + view.requestFocus(); + ((InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(view, 0); + } + + public void showDelayed(final View view) { + view.postDelayed(new Runnable() { + + @Override + public void run() { + final InputMethodManager keyboard = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); + keyboard.showSoftInput(view, 0); + } + }, 50); + } +} diff --git a/main/src/cgeo/geocaching/ui/EditNoteDialog.java b/main/src/cgeo/geocaching/ui/EditNoteDialog.java index 4bfa140..63f06fc 100644 --- a/main/src/cgeo/geocaching/ui/EditNoteDialog.java +++ b/main/src/cgeo/geocaching/ui/EditNoteDialog.java @@ -1,13 +1,17 @@ package cgeo.geocaching.ui; import cgeo.geocaching.R; +import cgeo.geocaching.activity.Keyboard; import cgeo.geocaching.ui.dialog.Dialogs; +import org.eclipse.jdt.annotation.NonNull; + import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; +import android.support.v4.app.FragmentActivity; import android.view.ContextThemeWrapper; import android.view.View; import android.widget.EditText; @@ -36,7 +40,8 @@ public class EditNoteDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - View view = View.inflate(new ContextThemeWrapper(getActivity(), R.style.dark), R.layout.fragment_edit_note, null); + final @NonNull FragmentActivity activity = getActivity(); + View view = View.inflate(new ContextThemeWrapper(activity, R.style.dark), R.layout.fragment_edit_note, null); mEditText = (EditText) view.findViewById(R.id.note); String initialNote = getArguments().getString(ARGUMENT_INITIAL_NOTE); if (initialNote != null) { @@ -45,7 +50,7 @@ public class EditNoteDialog extends DialogFragment { getArguments().remove(ARGUMENT_INITIAL_NOTE); } - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.cache_personal_note); builder.setView(view); builder.setPositiveButton(android.R.string.ok, @@ -63,6 +68,8 @@ public class EditNoteDialog extends DialogFragment { dialog.dismiss(); } }); - return builder.create(); + final AlertDialog dialog = builder.create(); + new Keyboard(activity).showDelayed(mEditText); + return dialog; } } |
