将单个片段用于多个 UI 任务



我正在使用片段主细节架构
所有片段类具有相同的逻辑
是否可以将片段从布局中"分离"并仅使用一个片段类
所以这段代码:

FragmentTransaction fragManager = getSupportFragmentManager().beginTransaction();
        if("001".equalsIgnoreCase(id)){
                    arguments.putString(Fragment001.ARG_ITEM_ID, id);
                    Fragment001 fragment = new Fragment001();
                    fragment.setArguments(arguments);                       fragManager.replace(R.id.item_detail_container, fragment);
        }
        else if("002".equalsIgnoreCase(id)){
                    arguments.putString(Fragment002.ARG_ITEM_ID, id);
                    Fragment002 fragment = new Fragment002();
                    fragment.setArguments(arguments);
                    fragManager.replace(R.id.item_detail_container, fragment);
        }
        fragManager.commit();

将变成类似这样的东西:

FragmentTransaction fragManager = getSupportFragmentManager().beginTransaction();               
                    GenericFragment fragment = new GenericFragment();                       
                    fragment.setUiId(id)
                    fragManager.replace(R.id.item_detail_container, fragment);
fragManager.commit();
  1. 列表项

是的,这是可能的,您可以检查并选择在onCreateView中使用的布局...

public static final String ARG_ITEM_ID1 = "fragment001";
public static final String ARG_ITEM_ID2 = "fragment002";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
         Bundle savedInstanceState) {
     View rootView = null;
     String id = "fragment001";
     if(ARG_ITEM_ID1.equalsIgnoreCase(id)){
         rootView = inflater.inflate(R.layout.fragment_1_layout, container, false);
     }
     else {
        rootView = inflater.inflate(R.layout.fragment_2_layout, container, false);
     }
     return rootView;
}

最新更新