2011-01-05 5 views
2

ListActivity를 확장하는 기본 클래스가 있는데,이를 사용하여 많은 공통 코드를 구현합니다 여러 다른 활동 구현.추상 기본 클래스를 사용하는 Android 액티비티는 컴파일 오류를 발생시킵니다. "추상적이지 않고 추상적 인 메서드를 오버라이드하지 않습니다 ..."

이 기본 클래스를 추상화하여 하위 클래스에 메서드 구현을 적용하려고합니다.

메소드의 기본 구현을 작성하고 서브 클래스에서이를 대체하면 모든 것이 정상적으로 작동합니다.

나는 방법 초록을하면, 나는 다음과 같은 컴파일 오류 얻을 :

XXXX.subapps.athletics.AthleticsNewsActivity is not abstract and does not override abstract method getListItems() in XXXX.subapps.BaseCategoryListActivity 

기본 클래스 :

public abstract class BaseCategoryListActivity extends ListActivity 
{ 
    .... 
    abstract ArrayList<String> getListItems(); 
    .... 
} 

예 서브 클래스 :

public class AthleticsNewsActivity extends BaseCategoryListActivity 
{ 
    .... 
    public ArrayList<String> getListItems() 
    { 
     ...implementation details.... 
    } 
} 
+0

적어도 일부 [기본 포맷] (http://stackoverflow.com/editing-help) – mark

답변

3

것은 당신이 추상을 연장하는 경우를 클래스를 확장 클래스로 추상화해야하거나 구현을 제공해야하는 클래스 :

public abstract class BaseCategoryListActivity extends ListActivity 
{ 
    .... 
    public abstract ArrayList<String> getListItems(); 
    .... 
} 

public class AthleticsNewsActivity extends BaseCategoryListActivity 
{ 
    .... 
    public ArrayList<String> getListItems() 
    { 
     ...implementation details.... 
    } 
} 

이가
폭 넓은 가시성 지정자에게

을 가질 수 없습니다 오버라이드 (override)되는 메소드가 항목, 작업 공공 수정의 변화를주의해야한다

01

abstract ArrayList<String> getListItems();

변경이 읽을 : public abstract

-

+0

을 사용하십시오. 선량. 그리고 내가 생각한 것은 안드로이드/액티비티와 관련된 것이라고 생각합니다. 나는 방금 분명한 것을 놓치고 더 복잡하게 만들었습니다. 감사! –

1

변경 액세스 한정자 당신은 그냥 나열이

public abstract ArrayList<String> getListItems()

하고 그것을 구현을 제공합니다.

1

가시성이 일치하지 않습니다. 공개 설정하십시오.

Out of topic : 인터페이스 (목록)가 아닌 구현 (ArrayList)을 서명에 사용하십시오.

관련 문제