大佬教程收集整理的这篇文章主要介绍了导航到 kotlin java,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我开发的一个App的基本配置。此应用有两个片段 FirstFragment
和 SecondFragment
,包含在 <FrameLayout
的 @H_815_3@mainActivity 中。
SecondFragment
必须始终显示包含物品的回收站视图
问题
我第一次点击 go to Second Fragment
按钮(在 First Fragment 中)时,它确实会在第二个 Fragment 中显示 recyclervIEw。
问题是,无论何时我返回(向上导航)并再次单击该按钮...第二个片段中不再出现 recyclervIEw。
在这个例子的更高级的版本中,我需要从另一个活动进入 MainActivity,或者改变手机的方向,才能再次显示带有项目的回收视图,当点击按钮时,在第二个片段中...
activity_main.xml
<relativeLayout>
<FrameLayout
androID:ID="@+ID/fragment_container"
androID:layout_wIDth="match_parent"
androID:layout_height="match_parent" />
</relativeLayout>
firts_fragment.xml
<relativeLayout>
<button
androID:ID="@+ID/buttonToSF"
androID:gravity="center"
androID:text="Go to Second Fragment" />
</relativeLayout>
second_fragment.xml
<relativeLayout>
<androIDx.recyclervIEw.Widget.RecyclerVIEw
androID:ID="@+ID/rvItemsList"
androID:BACkground="#000"
androID:layout_wIDth="match_parent"
androID:layout_height="400dp" />
</relativeLayout>
item.xml
<CardVIEw>
<TextVIEw
androID:ID="@+ID/tvWord"
androID:layout_wIDth="wrap_content"
androID:layout_height="wrap_content"
androID:text="Word" />
</CardVIEw>
@H_951_15@mainActivity.kt
class MainActivity : AppCompatActivity() {
private val firstFragment = FirstFragment()
private val firstFragmentTAG_name = "FirsT_FRAGMENT_TAG"
overrIDe fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceStatE)
setContentVIEw(R.layout.activity_main)
//go to first fragment by default
val transaction = supportFragmentManager.begintransaction()
transaction.replace(R.ID.fragment_container,firstFragment,firstFragmentTAG_Name)
transaction.commit()
}
fun callrvAdapter(context: Context) {
val arrayItems = ArrayList<Mymodel>()
arrayItems.add(Mymodel("Verbs"))
arrayItems.add(Mymodel("Nouns"))
arrayItems.add(Mymodel("Adverbs"))
rvItemsList.layoutManager = linearlayoutmanager(context)
rvItemsList.adapter = MyAdapter(arrayItems,context)
}
fun getToSecondFragment() {
val secondFragment = SecondFragment()
val secondFragmentTAGname = "SECOND_FRAGMENT_TAG"
val transaction = supportFragmentManager.begintransaction()
transaction.replace(R.ID.fragment_container,secondFragment,secondFragmentTAGName)
transaction.addToBACkStack(null)
transaction.commit()
}
}
FirstFragment.kt
class FirstFragment: Fragment() {
overrIDe fun onCreateVIEw(
inflater: LayoutInflater,container: VIEwGroup?,savedInstanceState: Bundle?
): VIEw? {
val vIEw = inflater.inflate(R.layout.first_fragment,container,falsE)
return vIEw
}
overrIDe fun onActivityCreated(savedInstanceState: Bundle?){
super.onActivityCreated(savedInstanceStatE)
buttonToSF.setonClickListener{
(activity as MainActivity).getToSecondFragment()
}
}
}
SecondFragment.kt
class SecondFragment: Fragment() {
overrIDe fun onCreateVIEw(
inflater: LayoutInflater,savedInstanceState: Bundle?
): VIEw?{
val vIEw = inflater.inflate(R.layout.second_fragment,falsE)
return vIEw
}
overrIDe fun onActivityCreated(savedInstanceState: Bundle?){
super.onActivityCreated(savedInstanceStatE)
(activity as MainActivity).callrvAdapter(requireContext())
}
}
class Mymodel(val hm_title:string)
我的适配器
class MyAdapter(val arrayList: ArrayList<Mymodel>,val context: Context) :
RecyclerVIEw.Adapter<MyAdapter.VIEwHolder>() {
class VIEwHolder(itemVIEw: VIEw) : RecyclerVIEw.VIEwHolder(itemVIEw) {
fun bindItems(model: Mymodel){
itemVIEw.tvWord.text = model.hm_title
}
}
overrIDe fun onCreateVIEwHolder(parent: VIEwGroup,vIEwType: int): VIEwHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.item,parent,falsE)
return VIEwHolder(v)
}
overrIDe fun onBindVIEwHolder(holder: VIEwHolder,position: int) {
holder.bindItems(arrayList[position])
}
overrIDe fun getItemCount(): Int {
return arrayList.size
}
}
到目前为止,这是我所拥有的......我需要函数 callrvAdapter()
始终保持在 @H_815_3@mainActivity 中,并且始终从第二个片段中调用该函数。
做错了什么?
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的导航到 kotlin java全部内容,希望文章能够帮你解决导航到 kotlin java所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。