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