如题:遇到当使用自定义布局的Yes NoDialog触发确定事件public class YesNoDialog extends Dialog implements OnClickListener { private TextView mTextView_Message;
private TextView mTextView_Title;
private View.OnClickListener mButton_OnClickListener;
private DialogInterface.OnClickListener mOnClickListener;
Button okButton;
Button noButton;
public YesNoDialog(Context context) {
super(context);
/** 'Window.FEATURE_NO_TITLE' - 隐藏显示Title */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_yes_no);
Display display = getWindow().getWindowManager().getDefaultDisplay();
android.view.WindowManager.LayoutParams layoutparams = getWindow()
.getAttributes();
layoutparams.width = display.getWidth() - 80;
getWindow().setAttributes(layoutparams); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setBackgroundDrawableResource(R.drawable.dialog_bg);
this.mTextView_Title = (TextView) findViewById(R.id.textView_Title);
this.mTextView_Message = (TextView) findViewById(R.id.textView_Message);
noButton = (Button) findViewById(R.id.button_No);
noButton.setOnClickListener(this);
okButton = (Button) findViewById(R.id.button_Yes);
this.mButton_OnClickListener = (android.view.View.OnClickListener) mOnClickListener;
okButton.setOnClickListener(mButton_OnClickListener);
} @Override
public void onClick(View v) { // 取消
if (v == noButton)
cancel();
if(v ==okButton)
{
dismiss();
}
} public void setMessage(CharSequence paramCharSequence) {
this.mTextView_Message.setText(paramCharSequence);
} public void setTitle(CharSequence paramCharSequence) {
this.mTextView_Title.setText(paramCharSequence);
} public void setButtonClickListener(DialogInterface.OnClickListener onClickListener) {
// TODO Auto-generated method stub
this.mOnClickListener = onClickListener;
}}
本要想简单用okButton.setOnClickListener(this); 但不行(自定义布局没继承Activity 没Context)
就传入事件。但传入事件,却没执行。
调用的代码如下,@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键 1
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.v(TAG, "触发back键");
final YesNoDialog customizeDialog = new YesNoDialog(LoginActivity.this);
customizeDialog.setTitle("提示");
customizeDialog.setMessage("你确定要退出吗?");
customizeDialog.setButtonClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Log.v(TAG, "点击确定按钮");
LoginActivity.this.finish();
}
});
customizeDialog.show();
return true;
} else
return super.onKeyDown(keyCode, event);
}
使用logcat也没进入"点击确定按钮",不知那里出错。请高手指明。
我不算改用AlertDialog.Builder实现YES NO效果。
private TextView mTextView_Title;
private View.OnClickListener mButton_OnClickListener;
private DialogInterface.OnClickListener mOnClickListener;
Button okButton;
Button noButton;
public YesNoDialog(Context context) {
super(context);
/** 'Window.FEATURE_NO_TITLE' - 隐藏显示Title */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_yes_no);
Display display = getWindow().getWindowManager().getDefaultDisplay();
android.view.WindowManager.LayoutParams layoutparams = getWindow()
.getAttributes();
layoutparams.width = display.getWidth() - 80;
getWindow().setAttributes(layoutparams); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setBackgroundDrawableResource(R.drawable.dialog_bg);
this.mTextView_Title = (TextView) findViewById(R.id.textView_Title);
this.mTextView_Message = (TextView) findViewById(R.id.textView_Message);
noButton = (Button) findViewById(R.id.button_No);
noButton.setOnClickListener(this);
okButton = (Button) findViewById(R.id.button_Yes);
this.mButton_OnClickListener = (android.view.View.OnClickListener) mOnClickListener;
okButton.setOnClickListener(mButton_OnClickListener);
} @Override
public void onClick(View v) { // 取消
if (v == noButton)
cancel();
if(v ==okButton)
{
dismiss();
}
} public void setMessage(CharSequence paramCharSequence) {
this.mTextView_Message.setText(paramCharSequence);
} public void setTitle(CharSequence paramCharSequence) {
this.mTextView_Title.setText(paramCharSequence);
} public void setButtonClickListener(DialogInterface.OnClickListener onClickListener) {
// TODO Auto-generated method stub
this.mOnClickListener = onClickListener;
}}
本要想简单用okButton.setOnClickListener(this); 但不行(自定义布局没继承Activity 没Context)
就传入事件。但传入事件,却没执行。
调用的代码如下,@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键 1
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.v(TAG, "触发back键");
final YesNoDialog customizeDialog = new YesNoDialog(LoginActivity.this);
customizeDialog.setTitle("提示");
customizeDialog.setMessage("你确定要退出吗?");
customizeDialog.setButtonClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Log.v(TAG, "点击确定按钮");
LoginActivity.this.finish();
}
});
customizeDialog.show();
return true;
} else
return super.onKeyDown(keyCode, event);
}
使用logcat也没进入"点击确定按钮",不知那里出错。请高手指明。
我不算改用AlertDialog.Builder实现YES NO效果。
{
final Dialog dialog = new Dialog(CleanUpTabActivity.this, R.style.TANCStyle);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.customer_dialog);
dialog.setCancelable(true);
TextView textView = (TextView)dialog.findViewById(R.id.custom_text);
textView.setText(R.string.cacheMessage);
Button left = (Button)dialog.findViewById(R.id.leftBtn);
Button right = (Button)dialog.findViewById(R.id.rightBtn);
left.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
clearnCrash1();
msgText.setVisibility(View.INVISIBLE);
empty.setText("已经清理完缓存垃圾");
count = 0 ;
chache_number = null;
SharedPreferences share = getSharedPreferences(scan_result, 0);
SharedPreferences.Editor editor = share.edit();
editor.putString("chache_count","缓存项目:"+ 0).commit();
editor.putInt("chache_count1",0).commit();
dialog.dismiss();
}
});
right.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}