Java 如何立即刷新AlertDialog的内容
这是我的问题。我有一个按钮,它是禁用的,如果没有日期,你目前选择。我的问题是每次我选择日期时,我的程序中的条件都不起作用。如果我选择了所需的日期,则应立即启用该按钮。但在我当前输入所需日期后,该按钮仍处于禁用状态。只有当我按下AlertDialog窗口的外部,然后再次按下将加载AlertDialog的按钮时,它才会工作,按钮将更新,并且按钮已启用 , , 这是我节目的一部分:Java 如何立即刷新AlertDialog的内容,java,android,android-alertdialog,disabled-control,Java,Android,Android Alertdialog,Disabled Control,这是我的问题。我有一个按钮,它是禁用的,如果没有日期,你目前选择。我的问题是每次我选择日期时,我的程序中的条件都不起作用。如果我选择了所需的日期,则应立即启用该按钮。但在我当前输入所需日期后,该按钮仍处于禁用状态。只有当我按下AlertDialog窗口的外部,然后再次按下将加载AlertDialog的按钮时,它才会工作,按钮将更新,并且按钮已启用 , , 这是我节目的一部分: private void Button(final String bookTitle, final String id
private void Button(final String bookTitle, final String id) {
mBorrowed = "not borrowed";
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.borrow_dialog, (ViewGroup) findViewById(R.id.linearLayout));
dialogBuilder.setView(view);
tvScheduleDate = (TextView) view.findViewById(R.id.tvScheduleDate);
tvReturnDate = (TextView) view.findViewById(R.id.tvReturnDate);
tvSchedule = (TextView) view.findViewById(R.id.tvSchedule);
btnRequest = (Button) view.findViewById(R.id.btnRequest);
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
tvSchedule.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(Borrow.this, Borrow.this, year, month, day);
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.DAY_OF_WEEK, 6); //for max date
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
datePickerDialog.show();
}
});
btnRequest.setEnabled(false);
if (dayFinal > 0) {
btnRequest.setEnabled(true);
btnRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final FirebaseUser user = firebaseAuth.getCurrentUser();
/*
String format_date = yearFinal + "-" + monthFinal + "-" + dayFinal ;
String ids = databaseBorrow.push().getKey();
String buttonText = btnBorrow.getText().toString();
BorrowBook borrow = new BorrowBook(ids,buttonText,bookTitle,getPresentDate(format_date),getFutureDate(format_date));
databaseBorrow.child(ids).setValue(borrow);
Toast.makeText(getApplicationContext(),"Borrow Successfully",Toast.LENGTH_SHORT).show();*/
btnRequest.setEnabled(false);
if (mBorrowed.equals("not borrowed")) {
databaseBorrow.child("Borrow").child(user.getUid()).child(id).child("request_type").setValue("sent").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
databaseBorrow.child("Borrow").child(id).child(user.getUid()).child("request_type").setValue("received").addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
btnRequest.setEnabled(true);
mBorrowed = "req_sent";
btnRequest.setText("Cancel Borrowed Request");
//Toast.makeText(Borrow.this,"Request Sent Successfully"+mBorrowed,Toast.LENGTH_SHORT);
}
});
} else {
Toast.makeText(Borrow.this, "Failed request", Toast.LENGTH_SHORT);
}
}
});
}
if (mBorrowed.equals("req_sent")) {
databaseBorrow.child("Borrow").child(user.getUid()).child(id).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
databaseBorrow.child("Borrow").child(id).child(user.getUid()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
btnRequest.setEnabled(true);
mBorrowed = "not borrowed";
btnRequest.setText("Send Borrowed Request");
}
});
}
});
}
}
});
}
}
private void按钮(最终字符串书名,最终字符串id){
mBorrowed=“未借用”;
AlertDialog.Builder dialogBuilder=新建AlertDialog.Builder(此);
LayoutInflater充气机=getLayoutInflater();
视图=充气机。充气(R.layout.borrow_对话框,(视图组)findViewById(R.id.linearLayout));
dialogBuilder.setView(视图);
tvScheduleDate=(TextView)view.findViewById(R.id.tvScheduleDate);
tvReturnDate=(TextView)view.findViewById(R.id.tvReturnDate);
tvSchedule=(TextView)view.findViewById(R.id.tvSchedule);
btnRequest=(按钮)view.findViewById(R.id.btnRequest);
final AlertDialog AlertDialog=dialogBuilder.create();
alertDialog.show();
tvSchedule.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Calendar c=Calendar.getInstance();
年份=c.get(日历年);
月=c.get(日历月);
day=c.get(日历,每月的第天);
DatePickerDialog DatePickerDialog=新的DatePickerDialog(借入.this,借入.this,年,月,日);
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c、 添加(Calendar.DAY,6);//以获取最大日期
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
datePickerDialog.show();
}
});
btnRequest.setEnabled(false);
如果(dayFinal>0){
btnRequest.setEnabled(true);
btnRequest.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
最终FirebaseUser用户=firebaseAuth.getCurrentUser();
/*
字符串格式_date=yearFinal+“-”+monthFinal+“-”+dayFinal;
String id=databaseBorrow.push().getKey();
字符串buttonText=btnBorrow.getText().toString();
借阅簿借阅=新借阅簿(ID、buttonText、bookTitle、getPresentDate(格式\日期)、getFutureDate(格式\日期));
databaseBorrow.child(id).setValue(borrow);
Toast.makeText(getApplicationContext(),“借用成功”,Toast.LENGTH\u SHORT.show()*/
btnRequest.setEnabled(false);
如果(mBorrowed.equals(“非借用”)){
databaseBorrow.child(“借用”).child(user.getUid()).child(id).child(“请求类型”).setValue(“发送”).addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
databaseBorrow.child(“借用”).child(id).child(user.getUid()).child(“请求类型”).setValue(“接收”).addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
btnRequest.setEnabled(true);
mBorrowed=“已发送请求”;
btnRequest.setText(“取消借用请求”);
//Toast.makeText(借用.this,“请求发送成功”+mBorrowed,Toast.LENGTH\u SHORT);
}
});
}否则{
Toast.makeText(借用.this,“请求失败”,Toast.LENGTH\u SHORT);
}
}
});
}
如果(mBorrowed.equals(“请求发送”)){
databaseBorrow.child(“借用”).child(user.getUid()).child(id).removeValue().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
databaseBorrow.child(“借用”).child(id).child(user.getUid()).removeValue().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
btnRequest.setEnabled(true);
mBorrowed=“未借用”;
btnRequest.setText(“发送借用请求”);
}
});
}
});
}
}
});
}
}
在DatePickerDialog
像这样:
DatePickerDialog datePickerDialog = new DatePickerDialog(Borrow.this, Borrow.this, year, month, day);
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.DAY_OF_WEEK, 6); //for max date
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btnRequest.setEnabled(true);
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btnRequest.setEnabled(false);
}
});
datePickerDialog.show();
final DatePicker datePicker = new DatePicker(mActivity);
datePicker.setMinDate(Calendar.getInstance().getTimeInMillis());
new AlertDialog.Builder(mActivity)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("Picker", datePicker.getDayOfMonth() + " : " + datePicker.getMonth() + " : " + datePicker.getYear());
btnRequest.setEnabled(true);
}
})
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
btnRequest.setEnabled(false);
}
}).setView(datePicker).show();
或
您可以使用DatePicker而不是使用DatapickerDialogue
private void Button(final String bookTitle, final String id) {
mBorrowed = "not borrowed";
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.borrow_dialog, (ViewGroup) findViewById(R.id.linearLayout));
dialogBuilder.setView(view);
tvScheduleDate = (TextView) view.findViewById(R.id.tvScheduleDate);
tvReturnDate = (TextView) view.findViewById(R.id.tvReturnDate);
tvSchedule = (TextView) view.findViewById(R.id.tvSchedule);
btnRequest = (Button) view.findViewById(R.id.btnRequest);
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
tvSchedule.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(Borrow.this, Borrow.this, year, month, day);
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.DAY_OF_WEEK, 6); //for max date
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
datePickerDialog.show();
}
});
btnRequest.setEnabled(false);
if (dayFinal > 0) {
btnRequest.setEnabled(true);
btnRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final FirebaseUser user = firebaseAuth.getCurrentUser();
/*
String format_date = yearFinal + "-" + monthFinal + "-" + dayFinal ;
String ids = databaseBorrow.push().getKey();
String buttonText = btnBorrow.getText().toString();
BorrowBook borrow = new BorrowBook(ids,buttonText,bookTitle,getPresentDate(format_date),getFutureDate(format_date));
databaseBorrow.child(ids).setValue(borrow);
Toast.makeText(getApplicationContext(),"Borrow Successfully",Toast.LENGTH_SHORT).show();*/
btnRequest.setEnabled(false);
if (mBorrowed.equals("not borrowed")) {
databaseBorrow.child("Borrow").child(user.getUid()).child(id).child("request_type").setValue("sent").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
databaseBorrow.child("Borrow").child(id).child(user.getUid()).child("request_type").setValue("received").addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
btnRequest.setEnabled(true);
mBorrowed = "req_sent";
btnRequest.setText("Cancel Borrowed Request");
//Toast.makeText(Borrow.this,"Request Sent Successfully"+mBorrowed,Toast.LENGTH_SHORT);
}
});
} else {
Toast.makeText(Borrow.this, "Failed request", Toast.LENGTH_SHORT);
}
}
});
}
if (mBorrowed.equals("req_sent")) {
databaseBorrow.child("Borrow").child(user.getUid()).child(id).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
databaseBorrow.child("Borrow").child(id).child(user.getUid()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
btnRequest.setEnabled(true);
mBorrowed = "not borrowed";
btnRequest.setText("Send Borrowed Request");
}
});
}
});
}
}
});
}
}
像这样:
DatePickerDialog datePickerDialog = new DatePickerDialog(Borrow.this, Borrow.this, year, month, day);
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.DAY_OF_WEEK, 6); //for max date
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btnRequest.setEnabled(true);
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btnRequest.setEnabled(false);
}
});
datePickerDialog.show();
final DatePicker datePicker = new DatePicker(mActivity);
datePicker.setMinDate(Calendar.getInstance().getTimeInMillis());
new AlertDialog.Builder(mActivity)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("Picker", datePicker.getDayOfMonth() + " : " + datePicker.getMonth() + " : " + datePicker.getYear());
btnRequest.setEnabled(true);
}
})
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
btnRequest.setEnabled(false);
}
}).setView(datePicker).show();
查看此解决方案可能会有所帮助我已经看到了此线程,但它没有显示我想要的任何解决方案。如果您谈论的是
btnRequest
,当然它将保持禁用状态,因为您没有回调方法或事件来启用按钮<代码>如果语句从未触发。尝试在DatePickerDialog
上实现OnDateSetListener
,并在用户设置日期时启用内部按钮。@Excalibur请查看我的答案。