我在寫一個擴展Fragment的類,我想在XML文件中使用它。對於我的類,我有一個構造函數,它接受一個參數,指定片段應如何佈局其UI。是否有可能在XML中傳遞構造函數參數?
我想在XML中使用我的類,但也想指定這個佈局參數,但是可以將它包含在XML中嗎?
我在寫一個擴展Fragment的類,我想在XML文件中使用它。對於我的類,我有一個構造函數,它接受一個參數,指定片段應如何佈局其UI。是否有可能在XML中傳遞構造函數參數?
我想在XML中使用我的類,但也想指定這個佈局參數,但是可以將它包含在XML中嗎?
碎片需要有無參數的構造函數。這是因爲可以多次創建片段實例。引述docs:
每一個片段必須有一個空的構造,所以可以 恢復其活性的狀態時,實例化。強烈建議 建議子類沒有其他具有 參數的構造函數,因爲當 片段被重新實例化時,將不會調用這些構造函數;相反,參數可以由 調用者提供的setArguments(Bundle)提供,然後由片段 用getArguments()檢索。
不幸的是,你不能使用在XML建議setArguments
,但有可能做到這一點不同,這取決於您計劃傳遞給你的片段是什麼的爭論可能集合。你可以,例如,繼承適當的片段:
public class MyPortraitFragment extends MyFragment {
public MyPortraitFragment() {
Bundle args = MyFragment.getPortraitArgsBundle();
setArguments(args);
}
}
public class MyLandscapeFragment extends MyFragment {
public MyLandscapeFragment() {
Bundle args = MyFragment.getLandscapeArgsBundle();
setArguments(args);
}
}
你會那麼在你的XML使用MyLandscapeFragment
或MyPortraitFragment
,這取決於你想使用的片段是哪個變種。
有一個類似的quiestion與一個體面的答案:http://stackoverflow.com/questions/8641575/custom-attributes-in-android-fragments –