2017-02-26 1 views
-1

왜 내가 onLongClickListener에 대한 void 메소드를 작성하면 안드로이드 스튜디오에서이 오류가 발생합니까?왜 내가 onLongClickListener에 대한 void 메소드를 만들면 안드로이드 스튜디오에서이 오류가 발생합니까?

myBTN.setOnLongClickListener(
      new Button.OnLongClickListener(){ 
       public void onLongClick(View v){ 
        TextView lblm=(TextView) findViewById(R.id.txtMessage); 
        lblm.setText("Good Bye :| "); 
       } 
      } 
    ); 

하지만 난 부울 방법을 사용하는 경우,이 방법은 이미 의해 부울 선언

myBTN.setOnLongClickListener(
      new Button.OnLongClickListener(){ 
       public boolean onLongClick(View v){ 
        TextView lblm=(TextView) findViewById(R.id.txtMessage); 
        lblm.setText("Good Bye :| "); 
        return true; 
       } 
      } 
    ); 

답변

0

이 오류되지 않습니다 오류 =>

'onLongClick(View)' in 'Anonymous class derived from android.view.View.OnLongClickListener' clashes with 'onLongClick(View)' in 'android.view.View.OnLongClickListener'; attempting to use incompatible return type 

내 코드입니다 팀이이 코드를 작성한 경우 구현 만 재정의 할 수 있지만 반환 유형은 무시하고 메서드 무시를 검색하십시오

0

인터페이스 android.view.View.OnLongClickListener에는 boolean을 반환하는 onClick(View) 메서드가 있습니다. 반환 값에 따라 메서드를 오버로드 할 수 없기 때문에 동일한 인수 목록을 사용하지만 반환 유형이 다른 메서드를 정의하면 컴파일 오류가 발생합니다.

0

메소드 오버라이드의 기본 개념입니다. 메소드를 반환 유형을 변경하여 재정의 할 수 있습니다. 자식 클래스가 부모와 동일한 메소드 서명을 갖는 경우 작업을 재정의합니다. 부모가 Button.OnLongClickListener 인 인터페이스입니다. 메서드는 다음과 같이 정의합니다.

따라서 익명 클래스를 구현할 때도 동일한 서명이 있어야합니다.

0

버튼는 인터페이스가 호출 한View.classView.class에 따라 버튼, 대로 setOnLongClickListener을 구현 해야하는 setOnLongClickListener이 없을 수 있습니다 onLongClickListener 메소드가 부울 유형이므로 다음과 같이 setOnLongClickListener 유형을 항상 구현할 수 있습니다.

button.setOnLongClickListener(new View.OnLongClickListener() { 
      @Override 
      public boolean onLongClick(View view) { 
       // your code here 
       return false; 
      } 
    }); 

당신이 안드로이드 스튜디오에서 View.class이상을 체크 아웃 할 수는 ..

OnLongClickListener 희망이 도움말을 클릭
관련 문제