我把一些片段放到一个这样的活动中
private void createFragmentList() {
Resources r = getResources();
String packageName = getPackageName();
fragmentList = new Fragment[]{
new Fragment_One,
new Fragment_Two,
...
};
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
for (int arrayIndex=0, fragmentNumber=1; fragmentNumber <= numberOfFragments; arrayIndex++, fragmentNumber++){
fragmentTransaction.replace(r.getIdentifier("fragment" + fragmentNumber, "id", packageName), fragmentList[arrayIndex]);
}
fragmentTransaction.commit();
}
现在我想对这些片段进行一些更改。 例如,如果我尝试隐藏按钮
/* will be called from onCreate() */
private void customizeFragmentList(){
Button backBtn = (Button) this.findViewById(R.id.backBtn);
backBtn.setVisibility(View.GONE);
}
但如果我运行此方法,应用程序将崩溃。 那么有可能从所有片段聚集在一起的主类进行更改吗? 如果我必须在每个片段类中单独执行此操作,那将是多余的工作
答案 0 :(得分:1)
在片段中创建公共方法
public void customizeFragmentList(){
Button backBtn = (Button) this.findViewById(R.id.backBtn);
backBtn.setVisibility(View.GONE);
}
并从您的活动
中调用它((Fragment_One)fragmentList.get(0)).customizeFragmentList();
注意:此示例仅对第一个片段有效。如果你想操纵其他片段,你需要分别抛出每个片段