Java 考虑到片段和活动的创建顺序,我如何管理它们? 我想做什么
我想从Fragment调用Activity,以便在Android应用程序中同时实现片段和活动之间的转换 我已经成功地从片段文件调用了活动文件上的一个特定方法,但从片段调用整个活动时遇到了问题Java 考虑到片段和活动的创建顺序,我如何管理它们? 我想做什么,java,android-fragments,kotlin,android-fragmentactivity,android-viewmodel,Java,Android Fragments,Kotlin,Android Fragmentactivity,Android Viewmodel,我想从Fragment调用Activity,以便在Android应用程序中同时实现片段和活动之间的转换 我已经成功地从片段文件调用了活动文件上的一个特定方法,但从片段调用整个活动时遇到了问题 SampleFragment - MainActivity's fragmentMethod() is called once the button is clicked on the page Sample1Fragment - FormActivity is called once the butto
SampleFragment - MainActivity's fragmentMethod() is called once the button is clicked on the page
Sample1Fragment - FormActivity is called once the button is clicked on the page
FormActivity - FormActivity2 is called once the button is clicked on the page
以上与我先前的问题相同:
错误和问题
成功地构建了一个项目并在模拟器上运行了应用程序。然而,当我点击按钮调用Sample1Fragment上的FormActivity时,屏幕突然关闭
我无法解决这个问题
发送至Sample1Fragment.kt上以下部件的错误消息
Modifier 'override' is not applicable to 'local function'
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
override fun onViewCreated(view: View, savedInstanceState: Bundle) {
btnClick2.setOnClickListener(object:View.OnClickListener{
// here I would like to move to FormActivity
override fun onClick(v: View?) {
activity?.startActivity(Intent(context, FormActivity::class.java))
}
})
}
Sample1Fragment.kt
Modifier 'override' is not applicable to 'local function'
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
override fun onViewCreated(view: View, savedInstanceState: Bundle) {
btnClick2.setOnClickListener(object:View.OnClickListener{
// here I would like to move to FormActivity
override fun onClick(v: View?) {
activity?.startActivity(Intent(context, FormActivity::class.java))
}
})
}
现行代码
MainActivity.kt
导入androidx.appcompat.app.appcompat活动
导入android.os.Bundle
导入android.widget.Toast
导入androidx.fragment.app.fragment
导入kotlinx.android.synthetic.main.activity\u main*
类MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//把碎片列出来
val fragmentList=arrayListOf(
SampleFragment(),
样本1碎片()
)
//创建适配器的实例
val适配器=SamplePagerAdapter(supportFragmentManager,fragmentList)
///设置适配器
viewPager.adapter=适配器
}
公共娱乐片段法(){
Toast.makeText(this@MainActivity,“从片段调用的方法”,Toast.LENGTH_LONG.show();
}
}
SampleFragment.kt
Modifier 'override' is not applicable to 'local function'
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
override fun onViewCreated(view: View, savedInstanceState: Bundle) {
btnClick2.setOnClickListener(object:View.OnClickListener{
// here I would like to move to FormActivity
override fun onClick(v: View?) {
activity?.startActivity(Intent(context, FormActivity::class.java))
}
})
}
导入android.os.Bundle
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入androidx.fragment.app.fragment
导入kotlinx.android.synthetic.main.fragment_示例*
类SampleFragment:Fragment(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
争论?让我们{
}
}
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_样品,容器,假)
}
覆盖活动创建的乐趣(savedInstanceState:Bundle?){
super.onActivityCreated(savedInstanceState)
btnClick.setOnClickListener(对象:View.OnClickListener{
覆盖有趣的onClick(v:视图?){
(活动作为主活动)。fragmentMethod()
}
})
}
}
Sample1Fragment.kt
Modifier 'override' is not applicable to 'local function'
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
override fun onViewCreated(view: View, savedInstanceState: Bundle) {
btnClick2.setOnClickListener(object:View.OnClickListener{
// here I would like to move to FormActivity
override fun onClick(v: View?) {
activity?.startActivity(Intent(context, FormActivity::class.java))
}
})
}
导入android.os.Bundle
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入androidx.fragment.app.fragment
导入kotlinx.android.synthetic.main.fragment_sample1*
导入android.content.Intent
类Sample1Fragment:Fragment(){
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_样本1,容器,假)
}
覆盖活动创建的乐趣(savedInstanceState:Bundle?){
super.onActivityCreated(savedInstanceState)
覆盖已创建的视图(视图:视图,savedInstanceState:Bundle){
btnClick2.setOnClickListener(对象:View.OnClickListener{
//在这里,我想谈谈形式活动
覆盖有趣的onClick(v:视图?){
活动?.startActivity(意图(上下文,FormActivity::class.java))
}
})
}
}
}
发展环境
Android Studio 3.6.1
我想做什么
它试图使用回答中推荐的SingleLiveEvent
,但我还没有找到在我当前的代码ListViewModel.kt
和Sample1Fragment.kt
上实现它的适当方法
参考:
ListViewModel.kt
导入android.app.usage.UsageEvents
导入android.os.Build
导入androidx.annotation.RequiresApi
导入androidx.lifecycle.LiveData
导入androidx.lifecycle.MutableLiveData
导入androidx.lifecycle.ViewModel
类ListViewModel:ViewModel(){
private val_navigateToDetails=MutableLiveData()
val navigateToDetails:LiveData
get()=\u导航到详细信息
@RequiresApi(Build.VERSION\u code.LOLLIPOP)
趣味用户ClicksOnButton(itemId:String){
_导航详细信息.value=
Event(itemId)//通过将新事件设置为新值来触发事件
}
}
这些是我面临的错误消息
Sample1Fragment.kt
Modifier 'override' is not applicable to 'local function'
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
override fun onViewCreated(view: View, savedInstanceState: Bundle) {
btnClick2.setOnClickListener(object:View.OnClickListener{
// here I would like to move to FormActivity
override fun onClick(v: View?) {
activity?.startActivity(Intent(context, FormActivity::class.java))
}
})
}
导入android.os.Bundle
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入androidx.fragment.app.fragment
导入kotlinx.android.synthetic.main.fragment_sample1*
导入android.content.Intent
类Sample1Fragment:Fragment(){
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_样本1,容器,假)
}
myViewModel.navigateToDetails.observe(这个,观察者{
it.getContentIfNotHandled()?。让{//仅在从未处理过事件时继续
已创建视图(视图:视图,保存状态:捆绑){
btnClick2.setOnClickListener(对象:View.OnClickListener{
//在这里,我想谈谈形式活动
覆盖有趣的onClick(v:视图?){
活动?.startActivity(意图(上下文,FormActivity::class.java))
}
})
}
})
}
}
这是我面临的错误消息