如何保存数据从文本视图当去到以前的活动Kotlin

a8jjtwal  于 2022-12-30  发布在  Kotlin
关注(0)|答案(2)|浏览(131)

我有一个子活动,我按下两个按钮,一个递增,一个递减。我想在返回前一个活动时保存这个数字。但是,我被困在这里。我尝试使用共享首选项,然而,这似乎适用于主要到次要的活动。我试着使用活动结果,这似乎远远超出了我现在。我希望textView中的值保持不变,直到我按下一个按钮重置整个过程。
这是父活动。

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity

class TallBoys : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_tall_boys)

    val btn1: Button = findViewById(R.id.button1)
    val btn2: Button = findViewById(R.id.button2)
    val btn3: Button = findViewById(R.id.button3)
    val btn4: Button = findViewById(R.id.button4)
    val btn5: Button = findViewById(R.id.button5)
    val btn6: Button = findViewById(R.id.button6)
    val btn7: Button = findViewById(R.id.button7)


    btn1.setOnClickListener {
        val intent = Intent(this, TallBoysNumbers::class.java)

    }

    btn2.setOnClickListener {
        val intent = Intent(this, TallBoysNumbers::class.java)
        startActivity(intent)
    }

    btn3.setOnClickListener {
        val intent = Intent(this, TallBoysNumbers::class.java)
        startActivity(intent)
    }
    btn4.setOnClickListener {
        val intent = Intent(this, TallBoysNumbers::class.java)
        startActivity(intent)
    }
    btn5.setOnClickListener {
        val intent = Intent(this, TallBoysNumbers::class.java)
        startActivity(intent)
    }
    btn6.setOnClickListener {
        val intent = Intent(this, TallBoysNumbers::class.java)
        startActivity(intent)
    }
    btn7.setOnClickListener {
        val intent = Intent(this, TallBoysNumbers::class.java)
        startActivity(intent)
    }

}

}
这是子活动

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class TallBoysNumbers : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_tall_boys_numbers)



    val confirmBtn: Button = findViewById(R.id.confirm_button)
    val plusBtn: Button = findViewById(R.id.plus)
    val textView = findViewById<TextView>(R.id.numbers)
    val negBtn: Button = findViewById(R.id.negative)
    var count = 0


    plusBtn.setOnClickListener {
        count++
        textView.text = count.toString()
        if (count >= 8) {
            plusBtn.isEnabled = false
            negBtn.isEnabled = true
        }

    }

    negBtn.setOnClickListener {
        count--
        textView.text = count.toString()
        if (count <= 0) {
            negBtn.isEnabled = false
            plusBtn.isEnabled = true
        }
    }



        confirmBtn.setOnClickListener {
            finish()
        }
    }
}
tpxzln5u

tpxzln5u1#

您正在调用“finish”方法。这将在不保存任何数据的情况下完成TallBoysNumbers活动。请不要使用SharedPreferences执行此操作。您需要的是“startActivityForResult”。
这将允许您在调用“finish”之前保存数据,并从调用者活动中获取数据。
https://developer.android.com/training/basics/intents/result

t40tm48m

t40tm48m2#

使用shared pref我希望你能想到
用于保存计数的类dataShared()

class DataShared(
      context: Context,
    userSharedPrefName:String="USER_SHARED_PREF_NAME"
    ) {
    private val sharedPreferences: SharedPreferences = 
     context.getSharedPreferences(
        userSharedPrefName, Context.MODE_PRIVATE
    )


    fun getCount(): Int {
        return (sharedPreferences.getInt("count", 0))
    }

    fun setCount(value: Int) {
        val editor = sharedPreferences.edit()
        editor.putInt("count", value)
        editor.apply()
    }

}

正Btn和负Btn

val data=DataShared(this)

plusBtn.setOnClickListener {
    if (data.getCount()<7) {
        data.setCount(data.getCount() + 1)
        textView.text = data.getCount().toString()
    }
}

negBtn.setOnClickListener {
    if (data.getCount()>=1){
        data.setCount(data.getCount()-1)
        textView.text=data.getCount().toString()
    }
}

相关问题