输入值未在我传入 Intents 的另一个活动中更新
Posted
技术标签:
【中文标题】输入值未在我传入 Intents 的另一个活动中更新【英文标题】:Input value not updating in another activity which I pass in Intents 【发布时间】:2021-12-13 02:54:36 【问题描述】:我的主要活动:-
var sec = second_activity()
var button1: Button? = null
var button2: Button? = null
var button3: Button? = null
var button4: Button? = null
button1 = findViewById<View>(R.id.button1) as Button
button2 = findViewById<View>(R.id.button2) as Button
button3 = findViewById<View>(R.id.button3) as Button
button4 = findViewById<View>(R.id.button4) as Button
button1?.setOnClickListener
sec.input = "a"
val intent: Intent = Intent(this, second_activity::class.java)
startActivity(intent)
button2?.setOnClickListener
sec.input = "b"
val intent: Intent = Intent(this, second_activity::class.java)
startActivity(intent)
第二个活动:-
class second_activity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener
private lateinit var toolbar: Toolbar
private lateinit var mDrawerLayout: DrawerLayout
var input : String = " "
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
//getting recyclerview from xml
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
//adding a layoutmanager
recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
//crating an arraylist to store users using the data class user
val users = ArrayList<User>()
//adding some dummy data to the list
//creating our adapter
val adapter = CustomAdapter(this , users)
//now adding the adapter to recyclerview
recyclerView.adapter = adapter
Toast.makeText(this, input , Toast.LENGTH_SHORT).show()
when(input)
"a" ->
users.add(User(R.drawable.bc))
"b" ->
users.add(User(R.drawable.bc))
users.add(User(R.drawable.bc))
users.add(User(R.drawable.bc))
users.add(User(R.drawable.bc))
我从 MainActivity 传递的输入值没有更新。它始终采用第二个活动中存在的空白值。我还尝试通过更改输入的位置。但没有奏效。请帮忙
有没有其他方法可以从第二个活动中找到在 MainActivity 中单击了哪个按钮
【问题讨论】:
从不自己创建活动的实例。删除var sec = second_activity()
。您可以使用Intent
extras 在活动之间传递值。或者,也许这应该是一个单独的活动,有两个片段或可组合的单独屏幕。
【参考方案1】:
是的,还有另一种方法。使用intent.putExtra("requestCode", requestCode)
。然后在第二个活动中,您可以使用 getIntent().getExtra().getInt("requestCode")
获取该 requestCode。
【讨论】:
【参考方案2】:是的,您可以使用以下代码将值从一个活动传递到另一个活动,
val intent: Intent = Intent(this, SecondActivity::class.java)
intent.putExtra(name, value)
startActivity(intent)
我在下面给出了示例代码,请试试这个..
在第一个活动中,我发送“语言”值。
val intent: Intent = Intent(this, SecondActivity::class.java)
intent.putExtra("language", "tamil")
startActivity(intent)
在第二个活动中,我检索了“语言”值。
将此代码放入您的第二个活动 onCreate()
val intent: Intent = getIntent()
var language = ""
if (intent != null)
language = intent.getStringExtra("language")
println("Language : $language")
【讨论】:
以上是关于输入值未在我传入 Intents 的另一个活动中更新的主要内容,如果未能解决你的问题,请参考以下文章
Firefox 输入类型 = 日期最小值未在最小有效月份打开