2014-12-21 3 views
-2

스레드에서 알림을 보내려고하지만 어떻게 든 작동하지 않습니다.Android - 생성자가 정의되지 않았습니다.

public void start_progressbar(View v) { 

    final ProgressDialog pd = ProgressDialog.show(this, 
      "Sending Notification", "Working... ", true, false); 

    new Thread() { 
     public void run() { 
      try { 
       sleep(3000); 
       notification(); 
      } catch (Exception e) { 
       final String ERROR = e.toString(); 
       Log.e(TAG + "He's dead Jim!!", "" + e); 
      } 
      pd.dismiss(); 
     } 

     private void notification() { 
      // TODO Auto-generated method stub 
      Notification not = new NotificationCompat.Builder(this) 
      .setContentTitle("New Event") 
      .setContentText("Monday 12. 11. 2014 meeting") 
      .build(); 
     } 

    }.start(); 
} 
+0

질문을 명확히하십시오. 작동하지 않는 것은 무엇입니까? 알림을 보내거나 보낸 알림을 처리하고 있습니까? 로그 파일의 내용은 무엇입니까? –

답변

4

내부 클래스에서 외부 클래스 인스턴스를 참조하려면 OuterClassName.this을 사용하십시오. this은 내부 클래스 인스턴스, 즉 익명 Thread 하위 클래스를 참조합니다.

+0

고마워요 !! – Ben

+0

NB이 문제는 ('this' 대 내부 클래스들) 많은 경우에 발생하며 발견하기가 쉽지 않습니다.'.get()','.equals()'및'Object 'param (예, API의 역설적 인 호환성)과 코드 전후 이동 메인 코드 대 내부 메소드; 범위 변경으로 인해 'this'범위를 업데이트하는 것을 잊어 버리기가 너무나 쉽습니다. 또한, 내가 아는 컴파일러가 이런 유형의 오류에 대해 경고하지 않는 것은 이상한 일이다. – vaxquis

관련 문제