问题
I need to intercept all touch events in the application to monitor for a custom activity time out.
Currently I use dispatchTouchEvent()
in my activities but this is not called if I have a dialog on the screen. Does any one know if there any way I can have this same functionality with a dialog being present?
Thanks
回答1:
For use dispatchTouchEvent()
in DialogFragment, override onCreateDialog
and return a custom Dialog
with dispatchTouchEvent
(in your custom DialogFragment).
Exemple, for dismiss keyboard when click outside in DialogFragment:
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new Dialog(getActivity(), getTheme()) {
@Override
public boolean dispatchTouchEvent(@NonNull MotionEvent motionEvent) {
if (getCurrentFocus() != null) {
InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(motionEvent);
}
};
}
来源:https://stackoverflow.com/questions/16024297/is-there-an-equivalent-for-dispatchtouchevent-from-activity-in-dialog-or-dialo