兩個Fragment之間傳值
阿新 • • 發佈:2019-02-01
Fragment之間傳值
宣告:fragment都是附著在Activity上的,所以fragment之間的傳值自然也需要經過Activity
1.假如有兩個activity,Activity1和Activity2,他們上分別含有fragment1和fragment2,現在想要在fragment1和fragment2之間傳值
2.首先fragment1需要跳到Activity2,將值存放在intent中,然後跳轉,可以在Activity2中定義一個方法
public static Intent newIntent(Context context, UUID crimeId){
Intent intent = new Intent(context,CrimeActivity.class);
intent.putExtra(CRIME_ID,crimeId);
return intent;
}
然後在fragment1中進行呼叫
Intent intent = CrimeActivity.newIntent(getActivity(), mCrime.getId());
startActivity(intent);
將crimeId的值傳到了Activity2中,那麼如何將值從Activity2中傳到fragment2中呢?我們可以使用fragment特有的argument引數,把值直接放入argument中,然後在fragment2中把值取出來。在fragment2中定義一個存值的方法
public static CrimeFragment newInstance(UUID crimeId) {
CrimeFragment fragment = new CrimeFragment();
Bundle args = new Bundle();
args.putSerializable(CRIMEID, crimeId);
fragment.setArguments(args);
return fragment;
}
然後在Activity2中進行呼叫
CrimeFragment.newInstance (crimeid)
接著在fragment2中取出argument中的值
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
crimeid = (UUID) getArguments().getSerializable(CRIMEID);
mCrime = CrimeLab.get(getActivity()).getCrime(crimeid);
}
}
這樣就完成了兩個fragment中進行傳值的操作。