我已經移動了一些功能我與片段使用在擴展的類基類的Android - 通用枚舉<?>抽象聲明不與枚舉定義適合擴展類
protected void changeToFragment(Enum<?> label){
changeToFragment(label, false);
}
protected void changeToFragment(Enum<?> label, boolean addToBackStack){
FragmentManager fragmentManager = getFragmentManager();
if (addToBackStack){
fragmentManager.beginTransaction()
.replace(R.id.container, getFragmentFromLabel(label), label.toString())
.addToBackStack(null)
.commit();
}
else{
fragmentManager.beginTransaction()
.replace(R.id.container, getFragmentFromLabel(label), label.toString())
.commit();
}
}
protected abstract Fragment getFragmentFromLabel(Enum<?> label);
我定義一個枚舉作爲我的片段參考
private enum Fragments { FRAG_1,
FRAG_2,
FRAG_3
}
,我已經實現了抽象功能
@Override
protected Fragment getFragmentFromLabel(Fragments label){
switch(label){
case FRAG_1: return getFragment1();
case FRAG_2: return getFragment2();
case FRAG_3: return getFragment3();
}
return null;
}
的問題是,我有一個錯誤說:XXX類必須是被聲明爲abstract或FragmentBaseActivity
實現抽象方法 getFragmentFromLabel(枚舉標籤)爲什麼getFragmentFromLabel(片段標籤)不符合這一要求?
將從'改變方法簽名...(片段標籤)''要...(枚舉>標籤)'修復你的問題?然後將枚舉轉換爲您需要的類型? – ElliotM
Yeap!它正在處理這種改變和這個投影開關((Fragments)標籤)謝謝!!但是...這種方法正在接受任何類型的枚舉,我可以限制兒童類中的方法只接受片段枚舉類型? – jmhostalet
是的,我會做出回答 – ElliotM