Fragment의 NewInstance호출
commit vs commitNow
Activity -> Fragment 데이터 전송
1. Bundle
Activity
FragmentTransaction ft = fragmentManager.beginTransaction();
Bundle bundle = new Bundle();
bundle.putString("initStep-2" , "Bundle Value");
audioPlay_fragment.setArguments(bundle);
ft.replace(R.id.fragment_container, audioPlay_fragment);
ft.commitNow();
Fragment
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WMLog.d(TAG , "### audioFragment call");
Bundle bundle = this.getArguments();
if(getArguments() != null) {
String result = bundle.getString("initStep-2");
WMLog.d("TAG" , "### result : " + result);
}
else
WMLog.d(TAG, "getArgument() : NULL");
}
Activity에서 Fragment 띄우기
// act에서 frag를 관리하기 위한 manager 생성
fragmentManager = (FragmentManager) getSupportFragmentManager();
// 커스텀 fragment생성
Fragment ctfragment = fragmentManager.findFragmentById(R.id.fragment_container);
if (ctfragment == null) {
// frag를 동적으로 생성, 제거, 교체하기 위한 fragment transaction
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.fragment_container , imageChoice_fragment);
ft.commit();
// commit = transactin이 비동기적으로 실행된다
// commitNow = 현재 transaction이 백스택에 추가되어 있지 않을 때만 사용할 수 있다.
}