如何连接两个字符串以在一个textview中显示?

时间:2019-04-24 15:09:26

标签: android string concatenation

我正在从事文字冒险游戏。

在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
} 

3 个答案:

答案 0 :(得分:1)

您可以使用+运算符连接字符串:

String firstString = resources.getString(R.string.you_are)
String secondString = resources.getString(R.string.garage)

textView.setText(firstString + secondString)

在您询问之前,请务必检查是否有人遇到类似问题:)

  

How do I concatenate two strings in Java?

答案 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>

然后,您可以像在布局和/或代码中其他任何手动定义的字符串一样访问

回购页面上的更多详细信息。