編輯:關於Android編程
我有一個文本輸入對話框,當我點擊對話框上的“是”按鈕,它會驗證輸入,然後關閉對話框。
但是,如果輸入錯誤,我想停留在同一個對話框中.。
每一次,無論輸入是什麼,對話框應該自動關閉,當我點擊“否”按鈕。我怎麼才能禁用這個?在網上找了很多,大部分都是修改布局,添加取消確定什麼的,這樣並不理想。
現在有個好方案,記錄下來先:
//重寫“確定”(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點擊按鈕不消失的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
Dialog的使用與總結
Dialog 使用總結Dialog 是Android中對話框相關的類,起到相關提示的作用。Dialog在Android 中主要分為以下幾類:AlertDialog :警告
Android 自動化測試經驗分享 UiObejct.getFromParent()的使用方法
1. UiObejct.getFromParent()的用法:從這個名字就知道,就是從當前對象的父對象中查找想要的子對象,該子對象和當前對象應該是同一層級。如上圖所示:M
【Android 應用開發】 Application 使用分析
一. Application 分析1. Application 簡介(1) Application 概念Application 概念: Application 屬於組件范
Android加載網絡GIF完整解決方案
前言:加載並顯示gif是App常見的一個功能,像加載普通圖片一樣,大體應該包含以下幾項功能:1、自動下載GIF到本地文件作為緩存,第二次加載同一個url的圖片不需要下載第
[Android]startActivityForResult啟動singleTask的Activity,則onActivitResult()立即回調且resultCode為RESULT_CANCEL
問題現象: 在剛安裝完demo應用未登錄任何帳號