我正在从事文字冒险游戏。
在strings.xml中,我有两个字符串。
如何将两个字符串加在一起,以便显示textview:
您在车库里。
谢谢。
strings.xml
<string name="location_prefix">You are in a </string>
<string name="location_name">Garage</string>
MainActivity.kt
package com.example.textdisplay
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
等级:
buildscript {
ext.kotlin_version = '1.3.21'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
答案 0 :(得分:1)
您可以使用+运算符连接字符串:
String firstString = resources.getString(R.string.you_are)
String secondString = resources.getString(R.string.garage)
textView.setText(firstString + secondString)
在您询问之前,请务必检查是否有人遇到类似问题:)
答案 1 :(得分:1)
假定activity_main.xml文件中有一个TextView,其ID为textView
。以下是一些为textView
设置文本的解决方案。
解决方案1
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView = findViewById<TextView>(R.id.textView)
textView.text = getString(R.string.location_prefix) + getString(R.string.location_name)
}
}
解决方案2
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView = findViewById<TextView>(R.id.textView)
textView.text = "${getString(R.string.location_prefix)}${getString(R.string.location_name)}"
}
}
解决方案3
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView = findViewById<TextView>(R.id.textView)
textView.text = String.format("%s%s", getString(R.string.location_prefix), getString(R.string.location_name))
}
}
由您选择解决方案。
更新:要将结尾空间保留在location_prefix字符串中,请转到string.xml文件并更改:
<string name="location_prefix">You are in a </string>
到
<string name="location_prefix">You are in a\u0020</string>
答案 2 :(得分:0)
如果您不想在代码中连接它们,则可以使用我创建的这个插件:https://github.com/LikeTheSalad/android-string-reference,它将在生成时生成一个包含所有要连接的字符串的字符串,因此对于您的情况,您必须在字符串中定义以下内容:
<string name="template_location_prefix">You are in a ${location_name}</string>
<string name="location_name">Garage</string>
然后,当您运行该工具时,将获得以下信息:
<string name="location_prefix">You are in a Garage</string>
然后,您可以像在布局和/或代码中其他任何手动定义的字符串一样访问
。回购页面上的更多详细信息。