我有一個應用程式(Java),原來有5個部分。所有這些都是片段,它們由底部導航中的5個圖示訪問。然而,其中一個部分(Lessons)現在被一個不同的片段所取代,該片段包含一個回收器視圖。在這個新的設計中,回收器視圖中的一個專案將呼叫課程片段。
問題是,我如何從包含在新片段中的回收器視圖中呼叫課程片段?
通常情況下,在回收器視圖中,我將使用如下代碼:
public void onClick(View v) {
int index = getAdapterPosition() 。
LessonItem item = lessonList.get(index);
Intent intent = new Intent(context, SomeActivity.class)。
Bundle bundle = new Bundle() 。
bundle.putSerializable("classic", item)。
intent.putExtras(bundle);
((Activity) context).startActivityForResult(intent, 1) 。
但是在這種情況下,我不是在處理一個活動。有什么方法可以讓我在不需要將片段轉換為活動的情況下完成這個任務嗎?
uj5u.com熱心網友回復:
正如ismailfarisi之前提到的,如果你使用Navigation Component,它可以使過渡更容易。
然而,如果你仍然想手動管理片段替換,你可以interfaces作為回呼。
interface LessonItemListener {
void onItemClick(LessonItem item) ;
在你的回收器視圖配接器中
class YourAdapter {
public YourAdapter(LessonItemListener listener) {
this.listener = listener。
}
private LessonItemListener listener;
...
@Override
public void onClick(View v) {
int index = getAdapterPosition() 。
LessonItem item = lessonList.get(index);
listener.onItemClick()。
}
在你的片段中,有recyclerview
。class YourFragment {
private LessonItemListener listener;
public void setListener(LessonItemListener) {
this.listener = listener。
}
private void setupRecyclerView() {
YourAdapter adapter = new YourAdapter(listener)。
recyclerView.setAdapter(adapter)。
}
在你的活動中包含這些片段
class YourActivity extends AppCompatActivity implements LessonItemListener{
private void setupFragments() {
YourFragment fragment = new YourFragment()。
fragment.setListener(this)。
}
...
。
//比如在你的底部導航中進行片段替換。
}
}
uj5u.com熱心網友回復:
來自jetpack的導航組件更適合處理片段轉換
你可以查看這個檔案https://developer.android.com/guide/navigation轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/318399.html
標籤:
