0
警告ダイアログを使用していて、5秒間持続するとすぐに消えません。ボタンをクリックしてもsetcancelableがfalseの場合でも、AlertDialog.Builderは消滅します。
private void setAlarm(Calendar targetCal) {
deleteCopy();
info.setText("\n\n***\n"
+ "Alarm is set @ " + targetCal.getTime() + "\n"
+ "***\n");
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
Intent alarmIIntent = new Intent(this, AlarmReceiver.class);
Intent intent_ForResult = new Intent(TimeDateRem.this, MainActivity.class);
startActivity(intent_ForResult);}
public void deleteCopy() {
Cursor cursor = dba.getnameofAlarm(title.getText().toString());
if (cursor.moveToFirst()) {
final DatabaseActivity dba= new DatabaseActivity(getApplicationContext());
String titleData=(cursor.getString(cursor.getColumnIndex(Constants.COLUMN_NAME)));
if(title.getText().toString().matches(titleData)) {
AlertDialog.Builder builder = new AlertDialog.Builder(TimeDateRem.this);
builder.setTitle("Set Alarm");
builder.setMessage("By setting this alarm you will be deleting the previous one, is that OK?")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dba.deleteAlarm(title.getText().toString().trim());
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
cursor.close();
}
deletecopy()任意のヘルプは
にあなたの後をクリックロジックを移動する必要があり、それが(deleteCopy''で) 'Dialog'を作成し、後で' MainActivity'を開始します。ダイアログはアクティビティによってホストされ、アクティビティを切り替えるとダイアログが消えます。ダイアログのOKクリックでアクティビティを開始してみてください。 –
ボタンをクリックするまでダイアログが表示されないのですか?私はその理由のためにfalseにsetcancelableをしました。私はコードを実行し続けることを望みません。私は意図が必要なので、そこで活動を開始できません@FranciscoM。 – spyder3anz
いいえ、ダイアログが表示され、実行が継続されますが、 'deleteCopy();'または 'alertDialog.show();'ではブロックされません。さもなければ、ユーザインタフェースはフリーズします。ダイアログがそこにとどまり、クリックが発生したときに非同期に 'OnClickListener'コードを実行します。 –