在运行时从一个类操作片段

时间:2017-06-23 09:07:30

标签: android android-fragments

我把一些片段放到一个这样的活动中

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);
}

但如果我运行此方法,应用程序将崩溃。 那么有可能从所有片段聚集在一起的主类进行更改吗? 如果我必须在每个片段类中单独执行此操作,那将是多余的工作

1 个答案:

答案 0 :(得分:1)

在片段中创建公共方法

public void customizeFragmentList(){ 
   Button backBtn = (Button) this.findViewById(R.id.backBtn);
   backBtn.setVisibility(View.GONE);
}

并从您的活动

中调用它
((Fragment_One)fragmentList.get(0)).customizeFragmentList();

注意:此示例仅对第一个片段有效。如果你想操纵其他片段,你需要分别抛出每个片段