使用按钮时,如何在片段内打开新的活动?
我尝试过
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
LogOut_btn.setOnClickListener {
//FirebaseAuth.getInstance().signOut()
val intent = Intent (this, Main::class.java)
startActivity(intent)
}
}
val intent =意图似乎在片段中不起作用。
您知道如何在片段中开始新活动吗?
我很感谢我收到的每一个答案,也感谢您的帮助!
答案 0 :(得分:4)
您可以在Kotlin中进行类似的操作
YourButton.setOnClickListener{
requireActivity().run{
startActivity(Intent(this, NeededActivity::class.java))
finish()
}
}
答案 1 :(得分:1)
由于Fragment
的类型不是Context
,因此您需要调用父级Activity
:
val intent = Intent (getActivity(), Main::class.java)
getActivity().startActivity(intent)
或类似的东西
activity?.let{
val intent = Intent (it, Main::class.java)
it.startActivity(intent)
}
答案 2 :(得分:1)
尝试从片段中获取上下文
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
LogOut_btn.setOnClickListener {
//FirebaseAuth.getInstance().signOut()
val intent = Intent (view.context, Main::class.java)
startActivity(intent)
}
}
答案 3 :(得分:1)
val intent = Intent (getActivity(), NextActivity::class.java)
getActivity()?.startActivity(intent)
这将完成工作。
getActivity()是从Fragment和getActivity()强制转换的吗?避免NPE
答案 4 :(得分:1)
FirebaseAuth.getInstance()。signOut()。
答案 5 :(得分:1)
对我来说,我就是这么做的,并且奏效了
val intent = Intent(AppName.applicationContext(), YourAppName::class.java)
activity?.startActivity(intent)
您可以将此代码添加到片段中
AppName
这是应用程序名称,其中包含context
之类的全局伴随对象
答案 6 :(得分:1)
这是我在尝试获得与工作类似的东西时发现的解决方案。
view.findViewById<Button>(R.id.button_second).setOnClickListener {
val i = Intent(activity, ClassNameOfActivityIWantToGoTo::class.java)
activity?.startActivity(i)
}
答案 7 :(得分:1)
val intent = Intent(activity, AttachmentActivity::class.java)
activity!!.startActivity(intent)
activity!!.finish()
答案 8 :(得分:0)
我相信这会像
activity?.let { callingActivity -> startActivity(Intent(callingActivity, Main::class.java)) }
您必须使用呼叫活动context
答案 9 :(得分:0)
您的代码差不多完成了,您只需要传递片段实例作为Intent的第一个参数,将@strong后面的片段名称替换为 YourFragmentName :
val intent = Intent (this@YourFragmentName.context, Main::class.java)
startActivity(intent)
看看下面的示例:
class MyFragment: Fragment(){
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val intent = Intent (this@MyFragment.context, YOUR_NEXT_ACTIVITY_CLASS::class.java)
startActivity(intent)
}
}
答案 10 :(得分:0)
如果仅使用activity
,则仅返回一个Activity实例。这可以是嵌入片段的任何活动,因此在某些情况下,您可以获取FragmentActivity而不是父活动。使用它来获得正确的信息:
(activity as YourParentActivity)?.let{
val intent = Intent (it, Main::class.java)
it.startActivity(intent)
}
答案 11 :(得分:0)
在kotlin
(fragment
)中:
在您的setOnClickListener
或Button
的{{1}}方法中编写此代码
View
答案 12 :(得分:0)
还有一个选项(对于Kotlin)。 在onCreateView中,为按钮设置onClickListener:
button.setOnClickListener {
requireActivity().run {
startActivity(Intent(this, MainActivity::class.java))
finish() // If activity no more needed in back stack
}
}
答案 13 :(得分:0)
放入
LogOut_btn.setOnClickListener {
//FirebaseAuth.getInstance().signOut()
val intent = Intent (this, Main::class.java)
startActivity(intent)
}
在加载片段的Activity的onCreate方法内部
答案 14 :(得分:0)
val intent = Intent (getActivity(), Main::class.java)
getActivity().startActivity(intent)
答案 15 :(得分:-1)
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.YourFragmentLayout, container, false)
view.button.setOnClickListener {
val intent = Intent(requireContext(), YourActivity::class.java)
startActivity(intent)
}
return view
}