2014-10-31 2 views
1

이 문제와 관련된 이전 스택 오버 플로우 해답을 살펴본 결과 아무도 문제를 해결하지 못했거나 다른 사람이 알아 낸 내용이지만 게시 한 내용을 게시하지 않았습니다. 경고 대화 상자에서 finish()를 호출 할 때 작업이 닫히지 않습니다.

 //Add snooze button 
     final Button snooze_button = (Button) findViewById(R.id.snooze_button); 

     // Strings to Show In Dialog with Radio Buttons 
     final CharSequence[] items = {"15 minutes","30 minutes","45 minutes","1 hour"}; 

     snooze_button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 

       AlertDialog.Builder builder=new AlertDialog.Builder(context); 
       builder.setTitle("Snooze?"); 
       builder.setSingleChoiceItems(items,-1, new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         final String ONE_TIME = "onetime"; 
         AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 

         if("15 minutes".equals(items[which])) 
         { 
          intent.putExtra(ONE_TIME, Boolean.TRUE); 
          PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
          am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 900000, pi); 
         } 
         else if("30 minutes".equals(items[which])) 
         { 
          PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
          am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1800000, pi); 
         } 
         else if("45 minutes".equals(items[which])) 
         { 
          PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
          am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 2700000, pi); 
         } 
         else if("1 hour".equals(items[which])) 
         { 
          PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
          am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 3600000, pi); 
         } 

        } 
       }); 
       builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         MyActivity.this.finish(); 
        } 
       }); 
       builder.show(); 

      } 
     }); 

사용자가 활동에

, 사용자는 스누즈 버튼을 클릭하여 일시 중지 한 번 클릭 할 수 있습니다 :

여기에 내가 가진 전형적인 스누즈 버튼입니다. 옵션을 선택하면 확인을 클릭합니다. 확인을 클릭하면 현재 활동을 닫거나 닫을 수 있기를 원합니다.

나는 위의

MyActivity.this.finish(); 

을 시도하지만 활동을 닫히지 않습니다.

내가 알아 차 렸던 한가지는 처음에는 작동하지 않지만 동일한 활동으로 되돌아갑니다. 그러나 다시 스누즈 메뉴로 돌아가서 확인을 클릭하면 활동이 취소됩니다. 왜 이런 일이 일어나는 지 잘 모르겠습니다.

+1

다음을보십시오. http://stackoverflow.com/questions/22477551/finish-activity-in-dialog-class-android-java –

+0

@BlazeTama, 감사합니다. 그것은 아주 잘 작동합니다. –

답변

2

나는 블레이즈 타마의 충고를 따랐다 내 온 클릭 방법 :

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         Intent menu = new Intent(context, MyOtherActivity.class); 
         context.startActivity(menu); 
         ((Activity) context).finish(); 
        } 
       }); 

의미가 있습니다! : D 나는 이것이 누군가이 문제를 해결하는 데 도움이되기를 바랍니다.