android-fragments 在Kotlin片段中保存一些数据

5lhxktic  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(158)

我有两个片段,首先(start_fragment)应显示应用程序何时启动,并具有2个按钮,1个按钮用于关闭应用程序(declineButton),第二个隐藏此片段并显示主片段(webview_fragment).如果用户按同意按钮,应用程序下次启动时间已在主片段中(webview_fragment).我如何保存该用户按下同意按钮?我试图创建布尔变量,但不能'I don“我无法想象如何将fragment中button的新值放到mainactivity中的变量中。
MainActivity.kt

package com.example.webviewapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    var firstlauch: Boolean = true
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        if (firstlauch == true) {
            supportFragmentManager
                .beginTransaction()
                .replace(R.id.fullcreen_holder, start_fragment())
                .commit()
        } else {
            supportFragmentManager
                .beginTransaction()
                .replace(R.id.webview_holder, webview_fragment())
        }
    }
}

起始片段.kt

package com.example.webviewapp

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button

class start_fragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?

    ): View? {
        val view = inflater.inflate(R.layout.layout_start_fragment, container, false)
        val agreeButton: Button = view.findViewById(R.id.privacy_agree)
        val declineButton: Button = view.findViewById(R.id.privacy_decline)
        agreeButton.setOnClickListener {
            val fragment = webview_fragment()
            val transaction = fragmentManager?.beginTransaction()
            transaction?.remove(this)?.replace(R.id.webview_holder, fragment)?.commit()
        }
        declineButton.setOnClickListener {
            requireActivity().finishAndRemoveTask()
        }
        return view
    }
}
3lxsmp7m

3lxsmp7m1#

您可以使用sharedPreferences来保存小数据。
在主要活动中

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val firstLaunch = sharedPref.getBoolean("YOUR_KEY", true)

在片段中

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val editor = sharedPref.edit()

agreeButton.setOnClickListener {
    editor.putBoolean("YOUR_KEY", true)
    val fragment = webview_fragment()
    val transaction = fragmentManager?.beginTransaction()
    transaction?.remove(this)?.replace(R.id.webview_holder, fragment)?.commit()
}
declineButton.setOnClickListener {
    editor.putBoolean("YOUR_KEY", false)
    requireActivity().finishAndRemoveTask()
}

相关问题