如题:遇到当使用自定义布局的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效果。

解决方案 »

  1.   

    private void opencachePopupwin()
    {
    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();

    }