
我有一个文本输入对话框,当我点击对话框上的“是”按钮,它会验证输入,然后关闭对话框。
但是,如果输入错误,我想停留在同一个对话框中.。
每一次,无论输入是什么,对话框应该自动关闭,当我点击“否”按钮。我怎么才能禁用这个?在网上找了很多,大部分都是修改布局,添加取消确定什么的,这样并不理想。
现在有个好方案,记录下来先:
//重写“确定”(AlertDialog.button_POSITIVE),截取监听dialog.getbutton(AlertDialog.button_POSITIVE).setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { Toast.makeText(MainActivity.this,"getbutton(AlertDialog.button_POSITIVE)",Toast.LENGTH_LONG).show(); //这里可以控制是否让对话框消失 dialog.dismiss(); } });完整Java代码如下:
package com.github.azhansy.dialognotdismissdemo;import androID.content.DialogInterface;import androID.support.v7.app.AlertDialog;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.Widget.EditText;import androID.Widget.ImageVIEw;import androID.Widget.Toast;public class MainActivity extends AppCompatActivity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); } //这里随便在主布局加个监听事件即可 public voID onClickText(VIEw vv){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("对话框标题"); VIEw vIEw = VIEw.inflate(this,R.layout.dialog_input_link,null); final EditText linkEdt = (EditText) vIEw.findVIEwByID(R.ID.edt_input_link); ImageVIEw clearIv = (ImageVIEw) vIEw.findVIEwByID(R.ID.iv_clear_link); builder.setVIEw(vIEw); clearIv.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { linkEdt.getText().clear(); } }); builder.setPositivebutton(androID.R.string.ok,new DialogInterface.OnClickListener() { @OverrIDe public voID onClick(DialogInterface dialogInterface,int i) { Toast.makeText(MainActivity.this,"确定",Toast.LENGTH_LONG).show(); } }); builder.setNegativebutton(androID.R.string.cancel,"取消",Toast.LENGTH_LONG).show(); } }); final AlertDialog dialog = builder.create(); dialog.setCanceledOntouchOutsIDe(false); dialog.show(); //重写“确定”,截取监听 dialog.getbutton(AlertDialog.button_POSITIVE).setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { Toast.makeText(MainActivity.this,Toast.LENGTH_LONG).show(); //这里可以控制是否让对话框消失 dialog.dismiss(); } }); }}对话框布局:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" androID:paddingleft="10dp" androID:paddingRight="10dp"> <relativeLayout androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"> <EditText androID:ID="@+ID/edt_input_link" androID:layout_wIDth="match_parent" androID:layout_height="48dp" androID:gravity="center_vertical" androID:maxlines="1" androID:paddingRight="30dp" androID:textSize="16sp" tools:text="fhafafa"/> <ImageVIEw androID:ID="@+ID/iv_clear_link" androID:layout_wIDth="30dp" androID:layout_height="30dp" androID:layout_alignParentRight="true" androID:layout_centerInParent="true" androID:scaleType="center" androID:src="@drawable/ic_clear"/> </relativeLayout></linearLayout>
以上所述是小编给大家介绍的AlertDialog点击按钮不消失的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的AlertDialog点击按钮不消失的实现方法全部内容,希望文章能够帮你解决AlertDialog点击按钮不消失的实现方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)