AlertDialog点击按钮不消失的实现方法

 更新时间:2017年01月04日 10:56:51   作者:azhansy  
我有一个文本输入对话框,当我点击对话框上的“是”按钮,它会验证输入,然后关闭对话框,但是,如果输入错误,我想停留在同一个对话框中。怎么实现此功能呢?下面通过本文给大家分享下

我有一个文本输入对话框,当我点击对话框上的“是”按钮,它会验证输入,然后关闭对话框。

但是,如果输入错误,我想停留在同一个对话框中.。

每一次,无论输入是什么,对话框应该自动关闭,当我点击“否”按钮。我怎么才能禁用这个?在网上找了很多,大部分都是修改布局,添加取消确定什么的,这样并不理想。

现在有个好方案,记录下来先:

 //重写“确定”(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, new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialogInterface, int i) {
        Toast.makeText(MainActivity.this,"取消", 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,"getButton(AlertDialog.BUTTON_POSITIVE)", 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点击按钮不消失的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android日期选择器对话框DatePickerDialog使用详解

    Android日期选择器对话框DatePickerDialog使用详解

    这篇文章主要为大家详细介绍了Android日期选择器对话框DatePickerDialog的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题

    快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题

    今天小编就为大家分享一篇快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android使用xml自定义图片实例详解

    Android使用xml自定义图片实例详解

    这篇文章主要介绍了 Android使用xml自定义图片实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android判断当前栈顶Activity的包名代码示例

    Android判断当前栈顶Activity的包名代码示例

    这篇文章主要介绍了Android判断当前栈顶Activity的包名代码示例,分享了相关代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • android导入第三方jar包报错 如何正确导入jar包

    android导入第三方jar包报错 如何正确导入jar包

    怎样在android平台上使用第三方jar包,为什么我在引入了,编译时没有错误,运行时就有错误,报无法实例化错误,请问这是什么原因,本文给于解决方法,需要了解的朋友可以参考下
    2012-12-12
  • Framework源码面试之activity启动流程

    Framework源码面试之activity启动流程

    这篇文章主要为大家介绍了Framework源码面试之activity启动流程实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • android短信管理器SmsManager实例详解

    android短信管理器SmsManager实例详解

    这篇文章主要为大家详细介绍了android短信管理器SmsManager实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android SQLite数据库连接实现登录功能

    Android SQLite数据库连接实现登录功能

    这篇文章主要为大家详细介绍了Android SQLite数据库连接实现登录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • Android巧用DecorView实现对话框功能

    Android巧用DecorView实现对话框功能

    本篇文章主要介绍了Android巧用DecorView实现对话框功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android 内存优化知识点梳理总结

    Android 内存优化知识点梳理总结

    这篇文章主要介绍了Android 内存优化知识点梳理总结,Android 操作系统给每个进程都会分配指定额度的内存空间,App 使用内存来进行快速的文件访问交互,长时间如此便需要优化策略,文章分享优化知识点总结,需要的朋友可以参考一下
    2022-06-06

最新评论