我想完成一個簡單的任務。我在一個布局中有一個不可見的按鈕,并且有一個片段。執行此功能時,我希望其他布局中的按鈕可見。但是這個帶有按鈕的布局不在 Fragment 布局中,這意味著我必須在 Fragment 中參考該按鈕,但我不知道該怎么做。
這就是 Fragment 對第一次使用的用戶的樣子。您看到的影像在一個 recyclerview 中,它使布局膨脹。該布局具有不可見的按鈕。
片段類
//item subscribed
if (subscribeValueFromPref) {
subscribeAbstract.visibility = View.GONE
// abstractDownload.visibility = View.VISIBLE
} else {
subscribeAbstract.visibility = View.VISIBLE
// abstractDownload.visibility = View.VISIBLE
}
}
當這行代碼執行時,片段中的按鈕消失了,而另一個布局中的按鈕變得可見。如您所見,我在該代碼前面加了兩筆。執行代碼后,布局應如下所示。
概括
我想從片段類中參考另一個布局中的按鈕。
uj5u.com熱心網友回復:
您甚至需要在片段之間進行通信嗎?您的示例看起來像一個帶有訂閱按鈕的片段,以及一個RecyclerView
包含可以顯示或隱藏按鈕的專案。您可以將其作為您Adapter
的狀態的一部分,如下所示:
class MyAdapter : RecyclerView.Adapter<ViewHolder>() {
var showDownloadButtons = false
set(value) {
field = value
// call this to update the display (calls onBindViewHolder for items)
notifyDataSetChanged()
}
override fun onBindViewHolder(viewHolder: ViewHolder, position.Int) {
...
// when displaying an item, show or hide the download button as appropriate
viewHolder.downloadButton.visibility = if (showDownloadButtons) VISIBLE else INVISIBLE
}
}
然后在你的片段中,當你根據訂閱值計算你的 UI 狀態時,你可以處理你的主按鈕并告訴配接器要顯示什么:
if (subscribeValueFromPref) {
subscribeAbstract.visibility = View.GONE
adapter.showDownloadButtons = true
} else {
subscribeAbstract.visibility = View.VISIBLE
adapter.showDownloadButtons = false
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/495473.html