当前位置: 首页 > 知识库问答 >
问题:

Android Studio Kotlin将字符串“abc”更改为Int 1

莫兴言
2023-03-14

我有一个带有3个字符串的微调器,“a”“b”“c”,我想通过选择字符串将其发送到新的SecondActivity,并且在Int 1或Float 1中更改字符串“a”。这可能吗?

    var itemList = arrayOf("a", "b", "c")

    Btn.setOnClickListener {
        val intent = Intent(this@MainActivity, SecondActivity::class.java)
        intent.putExtra("key", itemList[0])
        startActivity(intent)

        val intent2 = Intent((this@MainActivity, SecondActivity::class.java)
        intent2.putExtra("key2", itemList[1])
        startActivity(intent2)

        val intent3 = Intent((this@MainActivity, SecondActivity::class.java)
        intent3.putExtra("key3", itemList[2])
        startActivity(intent3)

第二项活动:

  var String1 = intent.getStringExtra("key")
  var String2 = intent.getStringExtra("key2")
  var String3 = intent.getStringExtra("key3")

    var bar = 0
    var bar2 = 0
    var bar3 = 0

        bar = numberHantel.toString().toInt()
        bar2 = numberHantel.toString().toInt()
        bar3 = numberHantel.toString().toInt()

我想把它放在一个字符中,但我的应用程序崩溃了。

    val entries = ArrayList<BarEntry>()
    entries.add(BarEntry(1f, bar.toFloat()))
    entries.add(BarEntry(2f, bar.toFloat()))

这里是Logcat:

2021 01月02日17:27:28.154 18649-18649/com。实例移动E/AndroidRuntime:致命异常:主进程:com。实例移动,PID:18649 java。lang.RuntimeException:无法启动活动组件信息{com.example.mobile/com.example.mobile.History}:java。lang.IllegalArgumentException:基数1不在有效范围2内。。36Android。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:3116)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:3259)。应用程序。服务器事务。启动ActivityItem。在android上执行(LaunchActivityItem.java:78)。应用程序。服务器事务。交易执行人。android上的executeCallbacks(TransactionExecutor.java:108)。应用程序。服务器事务。交易执行人。在android上执行(TransactionExecutor.java:68)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1950)。操作系统。处理程序。android上的dispatchMessage(Handler.java:106)。操作系统。活套。android上的loop(Looper.java:214)。应用程序。活动线程。java上的main(ActivityThread.java:7073)。郎。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodandArgscaler。在com上运行(RuntimeInit.java:494)。Android内部的操作系统。合子岩。主要(ZygoteInit.java:965)由:java引起。lang.IllegalArgumentException:基数1不在有效范围2内。。36在科特林。文本CharsKt_uCharjvmkt。在com上检查基数(CharJVM.kt:156)。实例可移动的历史com上的图表(历史。kt:117)。实例可移动的历史Android上的onCreate(History.kt:69)。应用程序。活动在android上执行创建(Activity.java:7327)。应用程序。活动在android上执行创建(Activity.java:7318)。应用程序。仪表。android上的callActivityOnCreate(Instrumentation.java:1271)。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:3096)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:3259)。应用程序。服务器事务。启动ActivityItem。在android上执行(LaunchActivityItem.java:78)。应用程序。服务器事务。交易执行人。android上的executeCallbacks(TransactionExecutor.java:108)。应用程序。服务器事务。交易执行人。在android上执行(TransactionExecutor.java:68)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1950)。操作系统。处理程序。android上的dispatchMessage(Handler.java:106)。操作系统。活套。android上的loop(Looper.java:214)。应用程序。活动线程。java上的main(ActivityThread.java:7073)。郎。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodandArgscaler。在com上运行(RuntimeInit.java:494)。Android内部的操作系统。合子岩。main(ZygoteInit.java:965)

和运行输出:

E/AndroidRuntime:致命异常:主进程:com。实例移动,PID:18459 java。lang.RuntimeException:无法启动活动组件信息{com.example.mobile/com.example.mobile.History}:java。lang.NumberFormatException:对于输入字符串,在android上为“null”。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:3116)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:3259)。应用程序。服务器事务。启动ActivityItem。在android上执行(LaunchActivityItem.java:78)。应用程序。服务器事务。交易执行人。android上的executeCallbacks(TransactionExecutor.java:108)。应用程序。服务器事务。交易执行人。在android上执行(TransactionExecutor.java:68)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1950)。操作系统。处理程序。android上的dispatchMessage(Handler.java:106)。操作系统。活套。android上的loop(Looper.java:214)。应用程序。活动线程。java上的main(ActivityThread.java:7073)。郎。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodandArgscaler。在com上运行(RuntimeInit.java:494)。Android内部的操作系统。合子岩。主要(ZygoteInit.java:965)由:java引起。lang.NumberFormatException:对于输入字符串,在java中为“null”。lang.Integer。java上的parseInt(Integer.java:615)。lang.Integer。com上的parseInt(Integer.java:650)。实例手机配件传感器。历史com上的图表(历史。kt:117)。实例手机配件传感器。历史Android上的onCreate(History.kt:69)。应用程序。活动在android上执行创建(Activity.java:7327)。应用程序。活动在android上执行创建(Activity.java:7318)。应用程序。仪表。android上的callActivityOnCreate(Instrumentation.java:1271)。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:3096)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:3259)。应用程序。服务器事务。启动ActivityItem。在android上执行(LaunchActivityItem.java:78)。应用程序。服务器事务。交易执行人。android上的executeCallbacks(TransactionExecutor.java:108)。应用程序。服务器事务。交易执行人。在android上执行(TransactionExecutor.java:68)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1950)。操作系统。处理程序。android上的dispatchMessage(Handler.java:106)。操作系统。活套。android上的loop(Looper.java:214)。应用程序。活动线程。java上的main(ActivityThread.java:7073)。郎。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodandArgscaler。在com上运行(RuntimeInit.java:494)。Android内部的操作系统。合子岩。main(ZygoteInit.java:965)

共有1个答案

鲁淇
2023-03-14

在您的main Active中,您需要有一个全局变量,并将微调器中选定选项的值传递给onItemSelectedListener()块中的该变量,如下所示:

var selectedOption = '' //this is a global variable

spinner.onItemSelectedListener = object : OnItemSelectedListener {
        override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
            selectedOption = parent.getItemAtPosition(position)[0]
        }

然后将其添加到您的意图中,并转至第二个活动:

val intent = Intent(this@MainActivity, SecondActivity::class.java)
intent.putExtra("key", selectedOption)
startActivity(intent)

在SecondActivity中,您可以接收intent extra(这是您的字符),并通过以下方式对其执行任何操作:

if (intent.hasExtra("key")){
    some_variable = intent.getCharExtra("key", '')
}

通过“更改为Int”,您是指更改为字母表中该字符的相应数量吗?

 类似资料:
  • 我想将我的IDE连接到OracleSQLDeveloper。因此我必须使用这行代码: 要输入密码,我使用: 我想知道如何将这个JPasswordField转换成字符串,这样我就可以使用代码I的“Connect”行(这一行仅适用于字符串) 编辑:这是输入密码的代码。我在stackoverflow上找到了它:

  • 下面是一个名为“containers”的表的片段。 如何将“产品”列更改为“字符变化[]”,并将相应的修饰符更改为默认值“{}”::字符变化[]?本质上,我想将字符串转换为字符串数组。注意,“产品”列对字符数没有限制。 抛出以下错误 错误:“products”列不能转换为不同类型的字符[]

  • 我必须使用itextpdf api创建一个pdf。我在这个项目中也有j汤api。我已经设法创建了一个pdf,它满足了所有的要求,除了一件事。pdf中的一列单元格必须从网络应用程序UI从html内容中获取它们的内容文本。所以,我把所有的标签和所有的标签都拿到了pdf。像这样: 现在我找到了一种通过使用Jsoup摆脱标记的方法。解析(cellContentText)。text(); 然而,现在没有线路

  • 据我了解 将创建两个对象- 一个在String常量池中(如果不在常量池中) 堆内存中的一个 虽然对于实际创建多少对象以及在何处创建对象,人们的理解并不多。 不管怎样,我有以下问题- 为什么在String类的java文档中没有提到要创建多少对象以及在哪里创建 编辑 java docs for方法显然谈到了常量池,但在中没有这样说。

  • 问题内容: 我想将数据框的索引(行)从float64更改为字符串或unicode。 我认为这会起作用,但显然不会: 错误信息: 问题答案: 您可以这样操作: 至于为什么将处理方式从int转换为float的原因不同,那就是numpy的特殊性(pandas所基于的库)。 每个numpy数组都有一个 dtype ,它基本上是其元素的 机器 类型:以这种方式, numpy直接处理本机类型 ,而不处理Pyt

  • 我有一个看起来像这样的字符串,由普通字符和中间的一个转义Unicode字符组成: < code>reb\u016bke 我想让Python将整个字符串转换成普通的Unicode版本,应该是< code > reb ske 。我试过用< code>str.encode(),但是好像没怎么用,显然decode已经不存在了?我真的卡住了! 编辑:repr的输出是< code>reb\\\u016bke