android - 我在哪里将逻辑放在片段中以与 UI 交互?安卓科特林
问题描述
所以我正在尝试构建一个 github 移动应用程序。我有一个底部导航,它连接到三个片段,分别是主页、个人资料和设置。所以在这个家庭片段中。我有一个按钮,我想导航到一个新的活动,还有一个来自图像的按钮,它对 github 网站有一个意图。我也有一个recyclerview,但它不起作用。我对如何让它在片段上工作感到困惑,因为在我有底部导航之前,我只有一个活动并且它工作得很好。这是家庭片段的代码。这是我的片段的代码:
class HomeFragment : Fragment() {
private lateinit var binding: FragmentHomeBinding
private lateinit var rvProfiles: RecyclerView
private var list: ArrayList<Profiles> = arrayListOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding = FragmentHomeBinding.inflate(layoutInflater)
rvProfiles = binding.rvGithubProfiles
rvProfiles.setHasFixedSize(true)
val githubToolbarButton = binding.toolbar.gitHubLogo
githubToolbarButton.setOnClickListener{
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.github.com"))
startActivity(intent)
}
val searchDeveloperButton = binding.searchDev
searchDeveloperButton.setOnClickListener{
val searchIntent = Intent(context, SearchUsersActivity::class.java)
startActivity(searchIntent)
}
list.addAll(ProfilesData.listData)
showRecyclerList()
}
private fun showRecyclerList(){
rvProfiles.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL,false)
val listProfileAdapter = ListProfileAdapter(list)
rvProfiles.adapter = listProfileAdapter
}
}
完整代码在我的 github 存储库中:https ://github.com/briancatraguna/GitHubClone
解决方案
从 onviewcreated 中删除绑定的初始化。如下做
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = FragmentHomeBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
rvProfiles = binding.rvGithubProfiles
rvProfiles.setHasFixedSize(true)
val githubToolbarButton = binding.toolbar.gitHubLogo
githubToolbarButton.setOnClickListener{
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.github.com"))
startActivity(intent)
}
val searchDeveloperButton = binding.searchDev
searchDeveloperButton.setOnClickListener{
val searchIntent = Intent(context, SearchUsersActivity::class.java)
startActivity(searchIntent)
}
list.addAll(ProfilesData.listData)
showRecyclerList()
}
推荐阅读
- c# - 为什么并行多线程代码执行比顺序慢?
- wpf - 如何在 WPF 中将一维数组绑定到二维显示(数据网格或网格)?
- python - 列出兼容性矩阵中的组合
- assembly - 如何从文件中读取值然后与相应的要求进行比较?比较/跳转命令不起作用
- android - 如何在旧计算机上获取 Android 虚拟机?
- azure-ad-b2c - SPA 的 B2C 刷新令牌生命周期 - 是否可以延长或设置为滑动到期
- solidity - safeTransferFrom 不会将以太币转移到目标。ERC-721
- reactjs - 如何处理初始空值react.js
- tooltip - 在散景的悬停工具中显示情节图例-我得到“???” 当我在工具提示中使用“$name”关键字时
- javascript - 更改单选按钮Angular 11的文本颜色