fragment复用:多个activity共用一个Fragment

来源:互联网 发布:语音聊天变声软件 编辑:程序博客网 时间:2024/05/22 06:42



问题一:Fragment如何封装成可复用的形式 ?

问题二:activity如何引用现成的fragment ?


1.先回答第一个问题:

   直接上代码,代码是项目中的,没有另写demo,具体代码参见android版小晴打卡FaceSign :


  

MainTabRecord 继承了 Fragment:
static MainTabRecord newInstance(Map<String, Object> map) {    MainTabRecord newFragment = new MainTabRecord();    final SerializableMap myMap=new SerializableMap();    myMap.setMap(map);    Bundle bundle = new Bundle();    bundle.putSerializable("map", myMap);    newFragment.setArguments(bundle);    return newFragment;}@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Bundle bundle = getArguments();    SerializableMap serializableMap = (SerializableMap) bundle.get("map");    maplist =serializableMap.getMap();}public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    Log.i("Tag_20150504","MainTabRecord.java/onCreateView:   "+"strName == "+strName + "     strUserId == "+strUserId);    View view = inflater.inflate(R.layout.main_tab_record, container, false);    someoneRecord = (TextView) view.findViewById(R.id.someoneRecord);    listView = (ExpandableListView) view.findViewById(R.id.expandableListView);
  。。。。。
2. 回答第二个问题:如何把现成的fragment塞给新开的activity。
/*
@function query other's history sign in  and sign out records.use the MainTabRecord fragmen. */public class QueryOtherHistoryRecordActivity extends FragmentActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_query_other_history_record);        Bundle bundle = getIntent().getExtras();        String name = bundle.getString(Constants.NAME);        String userid = bundle.getString(Constants.USERID);        Map<String, Object> map = new HashMap<String, Object>();        map.put(Constants.NAME, name);        map.put(Constants.USERID,userid);        MainTabRecord fragment = MainTabRecord.newInstance(map);        getSupportFragmentManager().beginTransaction().add(R.id.queryOtherRecord,fragment).commit();    }}

   

0 1
原创粉丝点击