在Kotlin片段中保存一些数据

发布于 2025-02-13 04:22:16 字数 2182 浏览 0 评论 0原文

我有2个片段,首先(start_fragment)应显示应用程序启动何时且有2个按钮,其中1个关闭应用程序(dewbutton)和第二个隐藏此片段并显示主片段(WebView_fragment)。如果用户按CLASSBUTTON,则下一个应用程序将在Main Fragment(WebView_fragment)中启动。如何保存该用户按同意按钮?我试图创建布尔变量,但无法想象如何在片段内的按钮中将新值放在主activity中。

MainAttivity.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())
        }
    }
}

start_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
    }
}

I have 2 fragments, first(start_fragment) should shows when app starts and have 2 buttons, 1 which close app(declineButton), and second which hide this fragment and show main fragment(webview_fragment). If user press agreeButton, next time app will starts already in main fragment(webview_fragment). How could i save that user press agree button? I tried to create boolean variable but can't imagine how can i put new value from button within fragment to variable within 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())
        }
    }
}

start_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
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不爱素颜 2025-02-20 04:22:16

您可以使用 sharedspreferences 保留小数据。

的主要目的

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()
}

You can use sharedPreferences for keep small data.

In MainActivity

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

In Fragment

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()
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文