android – onBackPressed在我从对话框片段返回并且编​​辑文本获得焦点时不会调用

android – onBackPressed在我从对话框片段返回并且编​​辑文本获得焦点时不会调用,第1张

概述我在 Android中构建的UI表单中遇到了问题. 在那种形式中,我有一些编辑文本,用户必须触摸它们才能打开对话框片段.在对话框片段中,用户可以设置一个值,然后,该值显示在触摸的edittext上.问题如下:当用户关闭对话框片段并且触摸的edittext获得焦点时,如果用户按下后退按钮熄灭,则不会调用onBackPressed()方法. 我必须澄清,打开对话框片段的edittexts不会显示键盘, 我在 Android中构建的UI表单中遇到了问题.
在那种形式中,我有一些编辑文本,用户必须触摸它们才能打开对话框片段.在对话框片段中,用户可以设置一个值,然后,该值显示在触摸的edittext上.问题如下:当用户关闭对话框片段并且触摸的edittext获得焦点时,如果用户按下后退按钮熄灭,则不会调用onBackpressed()方法.

我必须澄清,打开对话框片段的edittexts不会显示键盘,因为用户无法在其上书写.我不想使用textvIEws.

在这里,我向您展示部分布局:

<linearLayout        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:orIEntation="vertical">        ....        <androID.support.design.Widget.TextinputLayout            androID:layout_wIDth="match_parent"            androID:layout_height="wrap_content"            androID:ID="@+ID/text_input_when"            androID:layout_margintop="30dp">            <EditText                androID:hint="@string/meeting_when"                androID:layout_wIDth="match_parent"                androID:layout_height="wrap_content"                androID:ID="@+ID/edit_text_when"                androID:textSize="18sp"                androID:inputType="text|date"                androID:textIsSelectable="true"                androID:focusable="true"                androID:drawableleft="@drawable/ic_black_18dp"                androID:drawableStart="@drawable/ic_black_18dp"                androID:drawablepadding="10dp"                androID:onClick="onEditTextWhenClicked"                androID:nextFocusForward="@+ID/edit_text_time"/>        </androID.support.design.Widget.TextinputLayout>        <androID.support.design.Widget.TextinputLayout            androID:layout_wIDth="match_parent"            androID:layout_height="match_parent"            androID:ID="@+ID/text_input_time"            androID:layout_margintop="30dp">            <EditText                androID:hint="@string/meeting_time"                androID:layout_wIDth="match_parent"                androID:layout_height="wrap_content"                androID:ID="@+ID/edit_text_time"                androID:textSize="18sp"                androID:inputType="time"                androID:textIsSelectable="true"                androID:nextFocusForward="@+ID/edit_text_place"                androID:focusable="true"                androID:drawableleft="@drawable/ic__black_18dp"                androID:drawableStart="@drawable/ic__black_18dp"                androID:drawablepadding="10dp"                androID:onClick="onEditTextTimeClicked" />        </androID.support.design.Widget.TextinputLayout>........</linearLayout>

因此,例如,如果用户触摸“when”编辑文本,则会打开一个datepicker对话框:

当用户设置日期时,关闭对话框片段并在编辑文本上设置值

现在,如果用户按下后退按钮,则无效.

在我的活动中

@OverrIDepublic voID onBackpressed(){    if ( !areAllFIEldEmpty() ) {        showAlertCloseDialog();    }else        super.onBackpressed();}

但这些方法并没有被称为.
.
我对如何解决它一无所知.请帮我.如果您需要更多信息,请告诉我.谢谢.

解决方法 在视图中按下硬件键时,在片段中注册要调用的回调:

if (mLayout != null) {    mLayout.setFocusableIntouchMode(true);}mLayout.setonKeyListener(new VIEw.OnKeyListener() {    @OverrIDe    public boolean onKey(VIEw v,int keyCode,KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            getActivity().onBackpressed();            return true;        }        return false;    }});

如果它是后退键,请返回并使用返回true的事件,否则返回false.

如果你有背部和键盘override onKeyPreIme()extending your EditText的麻烦:

@OverrIDepublic boolean onKeyPreIme(int keyCode,KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_BACK) {        // User has pressed Back key. So hIDe the keyboard        inputMethodManager mgr = (inputMethodManager) mContext.getSystemService(Context.input_METHOD_SERVICE);        mgr.hIDeSoftinputFromWindow(this.getwindowToken(),0);        // HIDe your vIEw as you do it in your activity    } else if (keyCode == KeyEvent.KEYCODE_MENU) {        // Eat the event        return true;    }    return false;}
总结

以上是内存溢出为你收集整理的android – onBackPressed在我从对话框片段返回并且编​​辑文本获得焦点时不会调用全部内容,希望文章能够帮你解决android – onBackPressed在我从对话框片段返回并且编​​辑文本获得焦点时不会调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存