創建Fragment和傳遞數值
阿新 • • 發佈:2017-09-14
get puts java urn ransac win tin find on()
下面在擴展一下創建Fragment和傳遞數值
如果我們不需要傳遞數值,那就直接可以在宿主activity中,跟平常一樣創建fragment,但是如果我們需要傳遞數據的話,可以使用newInstance(數據)方法來傳遞,這個方法是自己定義的,但是是定義在Fragment中的一個靜態方法。
static MyFragment newInstance(String s){
MyFragment myFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putString("DATA",s);
myFragment.setArguments(bundle);
return myFragment;
}
//同樣,在onCreatView中直接獲取這個值
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_fragment,container,false);
Bundle bundle = getArguments();
String data = bundle.getString("DATA");
tv = (TextView) view.findViewById(R.id.id_fm_tv);
if(data != null){
tv.setText(data);
}
return view;
}
在宿主activity中,創建Fragment
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,android.R.anim.fade_out);
fragment1 = MyFragment.newInstance("這是第一個fragment");//這裏只需要直接調用這個方法,就創建了一個fragment
fragment2 = MyFragment.newInstance("這是第二個fragment");
fragment3 = MyFragment.newInstance("這是第三個fragment");
創建Fragment和傳遞數值