使用android:text =" @ string"不替换strings.xml文件中的字符串值

时间:2018-02-13 01:31:02

标签: android xml string

我是Android开发的新手。我最近下载了最新的Android Studio 3.0.1。我正在使用Wallace Jackson" Android Apps for Absolute Beginners"。当我按照本书创建我的(第一个)应用程序时,我有2个XML文件:

  1. activity_main.xml中
  2. 的strings.xml
  3. activity_main.xml文件已对android:txt="Hello World!"进行了硬编码 本书指导您修改文件1,以便为此字符串引用strings.xml。 文件2,strings.xml,被修改为添加第二行,其中包含通过删除"!"稍微修改的字符串。

    当我查看Android SDK中的预览布局窗格时,我看不到字符串" Hello World"

    相反,我看到" @ string"。

    我确信我做的事情基本上是错误的,或者错过了关键步骤或步骤。

    这是activity_main.xml文件(文件1)

        <?xml version="1.0" encoding="utf-8"?>
        <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.michael.myapplication.MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        </android.support.constraint.ConstraintLayout>
    

    这是strings.xml文件(文件2):

        <resources>
            <string name="app_name">My Application</string>
            <string name="app_message">Hello WORLD</string>
        </resources>
    

4 个答案:

答案 0 :(得分:2)

您必须指定字符串名称

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_message"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

要访问Android上的资源,您必须提供其资源ID才能访问它。

请参阅: https://developer.android.com/guide/topics/resources/accessing-resources.html

答案 1 :(得分:0)

访问字符串资源,例如// Spline Sine #declare SphereSine = union { #local Radius = 0.15; #local Amplitude = 2; #local Iterator = 0; #local Amount = 20; sphere_sweep { b_spline Amount, #for (Iterator, 0, Amount, 1) <Iterator, sin(Iterator)*Amplitude, 0>, Radius #end tolerance 0.1 pigment { rgb <1, 0, 0> } } }

<强> string.xml

android:text="@string/string_name"

答案 2 :(得分:0)

  

在strings.xml中

<string name="app_message">Hello WORLD</string>
  

在您的布局中

<?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.michael.myapplication.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_message"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    </android.support.constraint.ConstraintLayout>

答案 3 :(得分:0)

有效!你的解释很清楚。然后书中的文字不足或不清楚。它参考华莱士杰克逊的图4.4(第69页)和绝对初学者的Android应用程序#34;。该图包含源,但它是一个屏幕截图,几乎无法读取。 ...谢谢大家快速而明确的回复。