【问题标题】:Android Studio Kotlin Change a String "abc" to an Int 1Android Studio Kotlin 将字符串“abc”更改为 Int 1
【发布时间】:2021-04-06 09:18:14
【问题描述】:

我有一个带有 3 个字符串的 Spinner,“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.example.mobile E/AndroidRuntime:致命异常:主进程:com.example.mobile, PID:18649 java.lang.RuntimeException:无法启动活动 组件信息{com.example.mobile/com.example.mobile.History}: java.lang.IllegalArgumentException:基数 1 不在有效范围内 2..36 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3116) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3259) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1950) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7073) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 引起 作者:java.lang.IllegalArgumentException:基数 1 不在有效范围内 2..36 at kotlin.text.CharsKt__CharJVMKt.checkRadix(CharJVM.kt:156) at com.example.mobile.History.graph(History.kt:117) at com.example.mobile.History.onCreate(History.kt:69) 在 android.app.Activity.performCreate(Activity.java:7327) 在 android.app.Activity.performCreate(Activity.java:7318) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3096) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3259) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1950) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7073) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

和运行输出:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.mobile, PID:18459 java.lang.RuntimeException:无法启动活动 组件信息{com.example.mobile/com.example.mobile.History}: java.lang.NumberFormatException:对于输入字符串:“null”在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3116) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3259) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1950) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7073) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 引起 由:java.lang.NumberFormatException:对于输入字符串:“null”在 java.lang.Integer.parseInt(Integer.java:615) 在 java.lang.Integer.parseInt(Integer.java:650) 在 com.example.mobilesfitnesssensor.History.graph(History.kt:117) 在 com.example.mobilesfitnesssensor.History.onCreate(History.kt:69) 在 android.app.Activity.performCreate(Activity.java:7327) 在 android.app.Activity.performCreate(Activity.java:7318) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3096) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3259) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1950) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7073) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

【问题讨论】:

  • 也发布 Logcat 输出。这会很有帮助。

标签: kotlin


【解决方案1】:

在您的 mainActivity 中,您需要有一个全局变量并将微调器中选定选项的值传递给 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]
        }

然后将其添加到您的意图中并转到 SecondActivity:

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

在 SecondActivity 中,您可以接收额外的意图(即您的字符)并以这种方式做任何您想做的事情:

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

“更改为 Int”,您的意思是更改为字母表中该字符的对应数字吗?

【讨论】:

  • 首先感谢,不,我希望它通过到达数据或 0F 来更改浮点 1F 中的字符串以将其添加到条形图。因为在 Barchart 的描述中,只有 Float 有效。
  • 这到底是什么意思?给我一个例子。比如你希望得到 char 'c' 的数字是多少?我的意思是您将 char 更改为 float 的标准是什么?
  • 我有一个带有 3 个不同变量的微调器,当我取其中一个时,例如“a”或“b”或“c”并单击下一步按钮,此变量条目将出现在条形图中。最好的方式是从一天开始的时间戳。
  • 以及为什么我想将变量更改为 1 或 0 是 Barchart 仅适用于浮动工作。我认为 int 1 或 0 不是在 Float 中更改它的问题
  • 好吧,我不明白你希望得到一个字符的数字是多少?我的意思是如果它是'a'你想要1如果'b'你想要2如果'c'你想要3?你想要每个字母的 ASCII 表示吗?或者是其他东西?你有什么考虑?似乎您要么不知道自己到底想要什么,要么无法解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 2013-04-23
  • 2017-07-08
相关资源
最近更新 更多