我有这样的CustomDialog.java:
public class CustomDialog {
Dialog dl;
public void ShowDialog(Context context, String message) {
dl = new Dialog(context);
dl.setContentView(R.layout.custom_dialog);
TextView tv_message = (TextView) dl.findViewById(R.id.textViewMessage);
tv_message.setText(message);
Button bt_yes = (Button)dl.findViewById(R.id.buttonYes);
Button bt_no = (Button)dl.findViewById(R.id.buttonNo);
bt_yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckYes();
}
});
bt_no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dl.dismiss();
}
});
dl.show();
}
public Boolean CheckYesNo(Boolean check){
return check;
}
public Boolean CheckYes() {
return true;
}
public void CloseDialog() {
dl.dismiss();
}
}
这是Activity中使用CustomDialog的代码:
CustomDialog cdl = new CustomDialog ();
cdl.ShowDialog(Activity1.this, "test");
if (cdl.CheckYesNo(true)) {
// doing something with data and go to Activity 2
}
else {
cdl.CloseDialog();
}
我想要这样:
1.在Activity1中,单击ImageButton时,将显示CustomDialog
2.在CustomDialog显示之后,如果单击Button yes,它会对数据执行某些操作并转到Activity2
3.如果单击按钮否,CustomDialog将关闭并且不对数据执行操作。
但我的问题是:
当单击ImageButton,CustomDialog显示时,我想要处理数据的代码将执行并自动转到Activity2。
我无法选择是或否来点击
我认为按钮是onClick事件中的问题。
如何解决?
答案 0 :(得分:7)
参数初始化
X = X[:200]
y = y[:200]
您可以在想要使用的地方使用
Dialog dialog;
答案 1 :(得分:1)
您的代码看起来没问题,但对于按钮的onClickListeners
,我不明白为什么当您可以在CheckYes()
做任何想做的事情时,你仍然想要调用onClick
{1}}方法。
这就是代码的样子:
public void ShowDialog(final Context context, String message) {
dl = new Dialog(context);
dl.setContentView(R.layout.custom_dialog);
TextView tv_message = (TextView) dl.findViewById(R.id.textViewMessage);
tv_message.setText(message);
Button bt_yes = (Button)dl.findViewById(R.id.buttonYes);
Button bt_no = (Button)dl.findViewById(R.id.buttonNo);
bt_yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//You said you wanted to do something with the data? What data? Anyway, this is where you can do it
//do whatever with the "data"
//this is where you want to go to another activity
Intent activity2 = new Intent(context, <Your-Activity2-Name>.class);
context.startActivity(activity2);
//and you still want to dismiss the dialog
dl.dismiss();
}
});
bt_no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dl.dismiss();
}
});
dl.show();
}
我希望这会有所启发。请详细说明“单击YES按钮时对数据执行某些操作”的含义“ - 当您说不能选择是或否单击时,您的意思是什么?
答案 2 :(得分:0)
对我来说,我必须确保在对话框中使用findViewById访问之前创建了对话框。在我创建对话框的内部类中,在OnStart回调函数中我访问了按钮。当我说.show()时,我尝试在课外进行,但它给了我一个空指针异常。
对我而言,我只能通过对话框访问对话框中的按钮iD。我不能只做getActivity()。findViewById(R.id.blah)
这是我使用的代码:
@Override
public void onStart(){
super.onStart();
if(getDialog() == null){
return;
}
else {
ImageButton closeButton = (ImageButton)getDialog().findViewById(R.id.closeButton);
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getDialog().dismiss();
}
});
}
答案 3 :(得分:-1)
txt_showdailog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Dialog dialog =new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.bluetooothdialog);
dialog.show();
}
});