Android 我如何称呼孩子';父类中的方法?

Android 我如何称呼孩子';父类中的方法?,android,inheritance,Android,Inheritance,假设我有一个类ChildFragment,它继承自ParentFragment。其目的是使多个活动和片段具有按钮,这些按钮通常由一个ParentFragment处理 当用户按下刷新按钮时,它将调用ParentFragment中的refresh()函数。但是,实际下载此文件的操作由ChildFragment处理,因为每个片段都有不同的内容。所以我希望这个ParentFragment在执行refresh()时调用子对象中的某些内容 我该怎么做?或者,如果有更好的方法,也会有所帮助。您需要在子片段中重

假设我有一个类ChildFragment,它继承自ParentFragment。其目的是使多个活动和片段具有按钮,这些按钮通常由一个ParentFragment处理

当用户按下刷新按钮时,它将调用
ParentFragment
中的
refresh()
函数。但是,实际下载此文件的操作由ChildFragment处理,因为每个片段都有不同的内容。所以我希望这个ParentFragment在执行
refresh()
时调用子对象中的某些内容


我该怎么做?或者,如果有更好的方法,也会有所帮助。

您需要在子片段中重写
刷新
方法

public class PFragment extends Fragment{
  protected void refresh(){
    //Common stuff here
  }
}
在子类ovveride中,刷新方法

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

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

}

如果不希望子类必须实现refresh并调用super.refresh,请在ParentFragment中为downloadFile方法定义一个抽象方法,然后在子(ren)类中实现该方法:


!-简化组件之间的通信

在父级中放置虚拟刷新并调用它。子类必须重写它。您的意思是
abstract
not virtual:),但请注意,除非将super.refresh()添加到子类refresh方法中,否则不会执行父类refresh方法
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
    }
}
class ParentFragment {
    public void refresh() {
        downloadFile();
    }

    protected abstract void downloadFile();
}

class ChildFragment extends ParentFragment {
    @Override
    protected void downloadFile() {
        // do the download here
    }
}