因此我假設您在單擊一個選項卡上的按鈕時不會切換到另一個選項卡。因此片段應該填滿整個屏幕。
在這個假設在你心中最有可能切換Activity
。這可以是多內斯容易的Intent
: Intent intent = new Intent(getActivity(), ActivityB.class) intent.putExtra("KEY", <your required data to transfer>); getActivity().startActivityForResult(intent);
注意,當您使用putExtra()
不要忘記,你需要實現這些對象(explained here)
Parcelable
要了解哪些項目被點擊了你可以用下面的方式(僞 - 我個人認爲這是非常乾淨):
FragmentA implements YourAdapter.callback {
onItemClicked(<YourObject> item) {
<starting new activity as described above>
}
}
class YourAdapter extends RecyclerView.Adapter {
Callback mCallback;
YourAdapter(Context context, otherStuff) {
mCallback = (Callback) context;
}
interface Callback {
onItemClicked(<YourObject> item)
}
YourViewHolder implements View.OnClickListener {
onClick(View v) {
mCallback.onItemClicked(<YourObject> item)
}
}
}
一旦你在你的活動,你可以在你的活動onCreate()
設定的片段。在活動中,在創建片段之前,使用onCreate中的getIntent()
檢索數據。然後你可以將你的數據放在setArguments(<Bundle>)
的片段中。在onCreateview()
的片段中檢索它與。
我知道這是一種conmplicated。一個更好的解決方案是隻切換到一個活動並忘記Fragment。這會消除一層複雜性。
如果您直接從片段到片段,您可以忽略活動部分,但其餘應保持不變。
希望這是你正在尋找的答案!
編輯:請注意,mCallback = (Callback) context
爲null,如果該活動沒有實施Callback
,使這個更復雜的事情是,我必須寫回收視圖的適配器內的所有代碼。任何其他解決此問題的方法。沒有將所有代碼填充到適配器中? – JavaBanana