Alert Dialog "Done"按鈕定義.
在預設情況下,當使用者按下AlertDialog 的"Done"按鈕時,Dialog會自動消失.但有些情況下我們需要它仍然存在不消失, 那如何處理呢?
請對照如下程式碼:
package com.example.test;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class SpinnerDemo extends Activity implements OnClickListener {
private String TAG = "SpinnerDemo";
private Button btn = null;
private Button btn2 = null;
private AlertDialog mAlertDialog = null; ---> 儲存Dialog對物件
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
this.setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
//btn2 = (Button) findViewById(R.id.button2);
btn.setOnClickListener(this);
//btn2.setOnClickListener(this);
super.onCreate(savedInstanceState);
}
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(0);
if (mAlertDialog != null) {
Button bt = mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE); ---> 取得"Done"
if (bt != null) {
/* bt.setOnTouchListener(new OnTouchListener() {
boolean outOfRange = false;
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.v(TAG, " onTouch..." );
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.v(TAG, " ACTION_DOWN_..." );
outOfRange = false;
v.setPressed(true);
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
Log.v(TAG, " ACTION_MOVE..." );
boolean eventOnView = ((0 <= event.getX()) && (event
.getX() <= v.getWidth()))
&& ((0 <= event.getY()) && (event.getY() <= v
.getHeight()));
if (!eventOnView)
outOfRange = true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
Log.v(TAG, " ACTION_UP..." );
if (outOfRange == false)
return false;
v.cancelLongPress();
v.setPressed(false);
return true;
}
return false;
}
});
*/
bt.setOnClickListener(new OnClickListener() { ---->重新定義"Done" OnClickListener
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.v(TAG, " onClick ..." );
// dismissDialog(0);
removeDialog(0);
}
});
}
}
}
@Override
protected Dialog onCreateDialog(int id, Bundle args) {
// TODO Auto-generated method stub
return super.onCreateDialog(id, args);
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
LayoutInflater factory = LayoutInflater.from(this);
View editview = factory.inflate(R.layout.alter_dialog_text_entry, null);
EditText et = (EditText) editview.findViewById(R.id.TextView01);
Button btnDone = (Button) editview.findViewById(R.id.dialog_done);
Button btnCancel = (Button) editview.findViewById(R.id.dialog_cancel);
btnDone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dismissDialog(0);
}
});
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(SpinnerDemo.this);
builder.setTitle("Dialog Title");
builder.setPositiveButton("Done",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setView(editview);
mAlertDialog = builder.create(); ----->儲存Dialog物件
// return builder.create();
return mAlertDialog;
// return super.onCreateDialog(id);
}
}
相關文章
- 在 js 裡定義按鈕的響應函式JS函式
- (五)自定義按鈕模板和設定觸發器觸發器
- oracle alert的定義指南Oracle
- Android 自定義dialog,實現右上角顯示一個控制元件按鈕Android控制元件
- LabVIEW的自定義按鈕View
- Delphi中點選網頁彈出的Alert對話方塊的確定按鈕網頁
- ABAP ALV TOOLBAR 自定義按鈕的型別以及listmenu按鈕型別
- 設定按鈕的徽章文字
- iOS 自定義鍵盤字母按鈕iOS
- Simple WPF: WPF 自定義按鈕外形
- 使用DialogFragment定義自己的DialogFragment
- 自定義View:自定義屬性(自定義按鈕實現)View
- 按鈕上面的按鈕 (轉)
- WPF Button按鈕設定圓角
- Qt QMessageBox::information 自定義按鈕QTORM
- js練習----radio name屬性定義單選按鈕組JS
- css設定按鈕心跳收縮後,按鈕文字上下抖動,如何解決?CSS
- 按鈕
- 「HTML+CSS」--自定義按鈕樣式【004】HTMLCSS
- 「HTML+CSS」--自定義按鈕樣式【003】HTMLCSS
- antd-mobile 自定義picker按鈕樣式
- Qt自定義開關按鈕控制元件QT控制元件
- [HTML/CSS]uploadify自定義按鈕樣式HTMLCSS
- UIButton(用按鈕中的文字大小來動態設定按鈕的尺寸)UI
- 自定義 Dialog
- SAP MM 定義物料型別的屬性配置裡的New entries按鈕型別
- Windows API視窗程式設計 - 自定義按鈕WindowsAPI程式設計
- 「HTML+CSS」--自定義按鈕樣式【001】HTMLCSS
- 「HTML+CSS」--自定義按鈕樣式【002】HTMLCSS
- Android 自定義實現switch開關按鈕Android
- C#自定義控制元件—旋轉按鈕C#控制元件
- MFC設定按下Enter鍵後響應指定的按鈕
- 前端設計,確定按鈕正慢慢消失前端
- Swift 設定navigation左右兩側按鈕SwiftNavigation
- 菜鳥學JS(四)——javascript為按鈕註冊回車事件(設定預設按鈕)JSJavaScript事件
- 按鈕禁用
- Bootstrap 按鈕boot
- Qt5.9中QSS(qt Style Sheet)用法之一設定按鈕顏色和背景色(設定按鈕間相互間隔、設定按鈕與周圍邊緣間隔)QT