1. 程式人生 > >兩個Fragment之間傳值

兩個Fragment之間傳值

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中進行傳值的操作。