2017-05-21 3 views
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()任意のヘルプは

+0

にあなたの後をクリックロジックを移動する必要があり、それが(deleteCopy''で) 'Dialog'を作成し、後で' MainActivity'を開始します。ダイアログはアクティビティによってホストされ、アクティビティを切り替えるとダイアログが消えます。ダイアログのOKクリックでアクティビティを開始してみてください。 –

+0

ボタンをクリックするまでダイアログが表示されないのですか?私はその理由のためにfalseにsetcancelableをしました。私はコードを実行し続けることを望みません。私は意図が必要なので、そこで活動を開始できません@FranciscoM。 – spyder3anz

+0

いいえ、ダイアログが表示され、実行が継続されますが、 'deleteCopy();'または 'alertDialog.show();'ではブロックされません。さもなければ、ユーザインタフェースはフリーズします。ダイアログがそこにとどまり、クリックが発生したときに非同期に 'OnClickListener'コードを実行します。 –

答えて

0

をいただければ幸いです...現在作成1の同じ名前を持つデータベースから任意の行を削除し、これが動作するかどうかはわからないが、その私が言ったようにコメントで、あなたはあなたが `を呼び出すsetAlarm`さonClickListener

private void setAlarm(Calendar targetCal) { 
    deleteCopyAsk(targetCal); 
} 

public void deleteCopyAsk(final Calendar targetCal) { 
    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()); 

          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); 
         } 
        }) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 
      AlertDialog alertDialog = builder.create(); 
      alertDialog.show(); 
     } 
     cursor.close(); 
    } 
} 
関連する問題