因此我假设您在单击一个选项卡上的按钮时不会切换到另一个选项卡。因此片段应该填满整个屏幕。
在这个假设在你心中最有可能切换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