输入值未在我传入 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 输入类型 = 日期最小值未在最小有效月份打开

设置包中的默认值未在 Xamarin.iOS 中加载

导航栏 Alpha 值未在 iOS 7 中设置

在 Angular2 ngModel 值未在自定义指令的 onBlur 事件上更新

长 URL 值未在 Codeigniter 中提交

道具值未在 vuejs 中呈现