android - 如何保存我输入的编辑文本并在开始新意图时访问它?
问题描述
我正在尝试制作一个测验应用程序,以便当用户单击加号按钮时,它会将他们带到他们输入问题和答案的页面,然后他们可以保存并返回到上一页,其中有一个新按钮设置为问题的文本被创建。我已经对所有这些进行了编码和工作,除了如果用户想要编辑它可以保存以前输入的问题/答案活动状态的部分。我被告知我需要以捆绑的形式将我的主要活动中的问题和答案发送到我的第二个活动,但我不知道如何在我的主要活动中访问另一个布局 ID(以及如何在一般的)。有人可以帮忙吗?这是我的代码:
主要活动:
package com.example.quest
import android.app.Activity
import android.app.AlertDialog
import android.content.Intent
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.Gravity
import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
import com.google.android.material.floatingactionbutton.FloatingActionButton
class MainActivity : AppCompatActivity() {
private val questionActivityCode = 2
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<FloatingActionButton>(R.id.btn2).setOnClickListener{
startActivityForResult(Intent(this@MainActivity, SecondActivity::class.java), questionActivityCode)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == questionActivityCode && resultCode == Activity.RESULT_OK) {
createNewButtonWithText(data?.getStringExtra("test") ?: "")
}
}
private fun createNewButtonWithText(text: String)
{
val newbutton = Button(this@MainActivity)
val layout = findViewById<LinearLayout>(R.id.mainlayout)
newbutton.text = text
newbutton.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
newbutton.width=1010
newbutton.height=300
newbutton.gravity = Gravity.CENTER
newbutton.translationX= 65F
newbutton.setTextColor(Color.parseColor("#FFFFFFFF"))
newbutton.setBackgroundColor(Color.parseColor("#250A43"))
layout.addView(newbutton)
val inflator = layoutInflater
val builder = AlertDialog.Builder(this)
val intent = Intent(this@MainActivity, SecondActivity::class.java)
newbutton.setOnClickListener{
val dialogLayout = inflator.inflate(R.layout.text, null)
with(builder) {
setTitle(newbutton.text)
setPositiveButton("Edit"){dialog, which ->
startActivity(intent)
}
setNegativeButton("Cancel"){dialog, which ->
Log.d("Main", "Negative button clicked")
}
setView(dialogLayout)
show()
}
}
}}
第二个活动:
package com.example.quest
import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.EditText
import com.google.android.material.floatingactionbutton.FloatingActionButton
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val question = findViewById<EditText>(R.id.question)
findViewById<FloatingActionButton>(R.id.btn3).setOnClickListener{
val questiontext = question.text.toString()
val returnIntent = Intent()
returnIntent.putExtra("test", questiontext)
setResult(Activity.RESULT_OK, returnIntent)
finish()
}
}
}
解决方案
我不确定你想要达到什么目标。但我试图将您的问题分成 2 个问题。
- 您想保存输入的文本,以便以后进行编辑。
您可以使用共享首选项管理器
样本 :
/*Save your values to SharedPreference*/
// create shared Prefrence Manager
// edit() This allows you to write key-value pairs to
//SharedPreferences.
val sharedPre = PreferenceManager.getDefaultSharedPreferences(applicationContext).edit()
// add key-value pairs to SharedPreferences
sharedPre.putString("Key","Value")
// Instruct the SharedPreferences Editor instance to apply the changes.
sharedPre.apply()
/*Load your values from SharedPreference*/
val loadSharedPre = PreferenceManager.getDefaultSharedPreferences(applicationContext)
// its return Map with string and value
loadSharedPre.all
- 以捆绑的形式将我的主要活动的问题和答案发送到我的第二个活动 您可以使用parcelable,有关更多详细信息,您可以访问此站点
推荐阅读
- reactjs - 向所有反应路线添加一个组件,但一个
- javascript - javascript中字符串迭代和连接的时间和空间复杂度
- java - 控制文件中的 str 无法加载具有回车和换行的 csv 数据
- html - 等高的选项卡式内容
- firebase - 突然我收到无效的 Firebase 数据库路径:driver@driver.com Firebase 数据库路径不得包含“。”、“#”、“$”等
- java - 使用 H2 数据库的 JUnit 测试在调试模式下通过,但在测试模式下失败
- javascript - 在动态创建的输入文本上附加 eventListener
- python - 更改 crm.lead 模型中的默认货币 (odoo 12)
- javascript - 在按钮单击时水平反应滚动组件
- python - 在熊猫中重新索引时删除不必要的行