2017-05-05 5 views
3

예를 들어, 클래스가있는 경우 ChildFragment부모를에서 상속받습니다. 그 목적은 일반적으로 사용되는 버튼이있는 여러 활동 및 단편을 부모 파일에서 처리하는 것입니다.부모 클래스에서 하위 메서드를 호출하려면 어떻게해야합니까?

사용자가 새로 고침 버튼을 누르면 ParentFragmentrefresh() 함수가 호출됩니다. 그러나 실제로이 파일을 다운로드하는 작업은 모든 조각에 다른 내용이 있으므로 ChildFragment가 처리합니다. refresh()이 완료 될 때마다이 ParentFragment에서 자식의 무언가를 호출하기를 바랍니다.

어떻게하면됩니까? 아니면 더 나은 방법이 있다면 도움이 될 것입니다.

+0

가상 새로 고침을 상위에 배치하고 호출하십시오. 자녀가이를 무시해야합니다. –

+1

당신은'abstract' 가상이 아니라는 것을 의미합니다 :) –

답변

5

자식 조각에서 refresh 메서드를 재정의해야합니다. 당신은 새로 고침을 구현하고 super.refresh 전화를해야하는 자식 클래스를 원하지 않는 경우 새로 고침 방법

public class CFragment extends PFragment{ 
public void onClick(){ 
    super.refresh(); 
} 

@Override 
protected void refresh(){ 
//Custom stuff here 
} 

} 
+0

하지만 부모 클래스 새로 고침 메소드에 super.refresh()를 추가하지 않으면 부모 새로 고침 메소드가 실행되지 않습니다. –

+0

답변 수정 –

1
class ParentFragment() { 

    protected void refresh() { 
     // general code when refresh every fragment 
    } 
} 

class ChildFragment1 extend ParentFragment { 
    @Override 
    public void refresh() { 
     super.refresh(); 
     // code for refresh child fragment1 
    } 
} 

class ChildFragment2 extend ParentFragment { 
    @Override 
    public void refresh(); { 
     super.refresh(); 
     // code for refresh child fragment2 
    } 
} 
1

가의에서 추상 메소드를 정의 ovveride 자식 클래스에서

public class PFragment extends Fragment{ 
    protected void refresh(){ 
    //Common stuff here 
    } 
} 

ParentFragment를 다운로드 한 다음 하위 클래스에 구현합니다.

1

EventBus! - 구성 요소 간의 통신을 간소화하십시오.

관련 문제