我有 2 个片段 - Home Fragment 和 Frag 2。我在 Home Fragment (id: imageView3) 中有一个图像,当我点击图像时,我应该被带到 Frag 2。我使用以下方法使图像可点击代码行:
android:id="@+id/imageView3"
android:layout_width="383dp"
android:layout_height="211dp"
android:clickable="true"
android:focusable="true"
我在下面添加了 Home Fragment 和 Frag 2 的代码,我尝试在 home fragment 中设置 On Click,但我不确定如何将相应的代码添加到 Frag 2。我已经添加了从 Home Fragent 到 Frag 2 的导航,但我认为我还应该向 MainActivity 添加一些代码? 我遇到的所有在线参考资料都非常混乱,我是初学者,正在尝试自学,所以请帮助我了解 Home Fragment、Frag 2 和 MainActivity 中的代码。非常感谢您的帮助!
HomeFragment.kt
package com.example.landingpages.ui.home
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import com.example.landingpages.Frag2
import com.example.landingpages.R
import com.example.landingpages.databinding.FragmentHomeBinding
class HomeFragment : Fragment() {
private var _binding: FragmentHomeBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
_binding = FragmentHomeBinding.inflate(inflater, container, false)
val root: View = binding.root
val imageView5 = findNavController(R.id.imageView5) as ImageView
imageView5.setOnClickListener {
val intent = Intent(this, Frag2::class.java)
startActivity(intent)
}
val textView: TextView = binding.textView
homeViewModel.text.observe(viewLifecycleOwner) {
}
return root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
Frag2.kt
package com.example.landingpages
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.example.landingpages.databinding.FragmentIplAuctionBinding
private const val ARG_PARAM1 = "param1"
private const val ARG_PARAM2 = "param2"
class Frag2 : Fragment() {
private var param1: String? = null
private var param2: String? = null
private lateinit var binding: FragmentIplAuctionBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = FragmentIplAuctionBinding.inflate(layoutInflater)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_ipl_auction, container, false)
}
}
}
MainActivity.kt
package com.example.landingpages
import android.os.Bundle
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.example.landingpages.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val navView: BottomNavigationView = binding.navView
val navController = findNavController(R.id.nav_host_fragment_activity_main)
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.navigation_home, R.id.navigation_matches, R.id.navigation_profile
)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
}
我已将 setOnClickListener 添加到主页片段。我想我必须将 return() 添加到 Frag 2,但我不确定。我也不确定要将 Frag 2 广告到主活动,因为我使用的其他片段喜欢导航栏。 问题很简单:如果用户点击 imageview3,他们应该被带到 Frag 2