76

我目前正在为一个学校项目学习一些 android,但我无法弄清楚将文本动态设置TextView.

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enviar_mensaje);
    err = (TextView)findViewById(R.id.texto);
    err.setText("Escriba su mensaje y luego seleccione el canal.");
}

这目前不起作用,我找不到使它起作用的方法......

任何帮助将不胜感激......谢谢你的时间,何塞。

编辑:这里是activity_enviar_mensaje.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ...
    tools:context=".EnviarMensaje" >
    ...
    <TextView
        android:id="@+id/texto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/listaVista"
        android:layout_alignParentBottom="true"
        android:layout_alignRight="@+id/listaVista"
        android:text="TextView" />
    ...
</RelativeLayout>

通过不工作,我的意思是显示的文本在任何时候都不会改变......

4

23 回答 23

136

在您的布局 XML 中:

<TextView
        android:id="@+id/myAwesomeTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        android:textSize="20sp" />

然后,在您的活动课程中:

// globally 
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);

//in your OnCreate() method
myAwesomeTextView.setText("My Awesome Text");
于 2013-10-18T14:52:30.810 回答
23

将此代码放入您的 XML 文件中

<TextView
    android:id="@+id/textview1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

将此代码放入您的 JAVA 文件中

// 全局声明TextView之类的组件是个好习惯

TextView mTextView = (TextView) findViewById(R.id.textview1);

// 把它放在 OnCreate 中

mTextView.setText("Welcome to Dynamic TextView");
于 2016-03-08T07:03:40.430 回答
9

Well, @+id/listaVista ListView is drawn after @+id/texto and on top of it. So change in ListView from:

android:layout_below="@+id/editText1"

to:

android:layout_above="@+id/texto"

Also, since the list is drawn after textview, I find it dangerous to have android:layout_alignRight="@+id/listaVista" in TextView. So remove it and find another way of aligning.

EDIT Taking a second look at your layout I think this is what you really want to have:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".EnviarMensaje" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/texto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/listaVista"
        android:layout_alignParentBottom="true"
        android:text="TextView" />

    <ListView
        android:id="@+id/listaVista"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/texto"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1" >
    </ListView>

</RelativeLayout>
于 2013-10-18T14:41:31.167 回答
6

在布局文件中。

<TextView
   android:id="@+id/myTextView"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="Some Text"
   android:textSize="18sp"
   android:textColor="#000000"/>

活动中

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setText("Hello World!");
于 2017-01-07T13:37:48.230 回答
6

在 xml 中使用这个:

<TextView 
       android:id="@+id/textView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>

在 Activity 中定义视图:

Textview textView=(TextView)findViewById(R.id.textView);
textView.setText(getResources().getString(R.string.txt_hello));

在字符串文件中:

<string name="txt_hello">Hello</string>

输出:你好

于 2017-04-25T12:07:05.910 回答
4

为什么不尝试分配 textview 内容 onStart() 而不是 onCreate()

于 2014-03-20T20:23:09.803 回答
4

I had a similar problem. It turns out I had two TextView objects with the same ID. They were in different view files and so Eclipse did not give me an error. Try to rename your id in the TextView and see if that does not fix your problem.

于 2014-03-05T02:31:53.933 回答
4

在您的 activity_main.xml 中粘贴以下代码:

            <TextView
                 android:id="@+id/name"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentLeft="true"
                 android:layout_alignParentTop="true"
                 android:layout_marginLeft="19dp"
                 android:layout_marginTop="43dp"
                 android:text="@string/name" />

并转到 res 文件夹->values->strings.xml 将以下代码粘贴到已存在的代码中:

          <string name="name">Escriba su mensaje y luego seleccione el canal.</string>

上面的代码意味着您已经创建了一个带有 id:name(android:id="@+id/name") 的 textview 并将该 textview 分配给一个带有标识符 name(android:text="@string/name") 的字符串在 strings.xml 中,您使用该标识符名称来分配文本,

于 2014-04-17T09:22:53.813 回答
4

尝试这个:

TextView err = (TextView)findViewById(R.id.text);

确保导入 TextView。

于 2015-07-11T18:43:42.267 回答
3

这应该可以解决问题:

TextView.setText("test");
于 2014-07-31T10:24:45.713 回答
3

请更正以下行:

err = (TextView)findViewById(R.id.texto);

至:

err = (TextView)findViewById(R.id.err);
于 2015-07-10T17:10:59.167 回答
3

首先你应该为文本视图创建一个对象TextView show_alter

show_alert = (TextView)findViewById(R.id.show_alert);
show_alert.setText("My Awesome Text");
于 2016-09-24T14:56:52.250 回答
3

您可以像下面这样以编程方式在 textview 中设置字符串。

TextView textView = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

或者

TextView textView = (TextView)findViewById(R.id.texto);
err.setText(getActivity().getResource().getString(R.string.seleccione_canal));

您可以在 xml 中设置字符串,如下所示。

<TextView
         android:id="@+id/name"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
         android:layout_marginLeft="19dp"
         android:layout_marginTop="43dp"
         android:text="Escriba su mensaje y luego seleccione el canal." />

或者

<TextView
         android:id="@+id/name"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
         android:layout_marginLeft="19dp"
         android:layout_marginTop="43dp"
         android:text="@string/seleccione_canal" />
于 2018-02-06T12:35:54.563 回答
3

在 XML 文件中,

<TextView
       android:id="@+id/textview"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="My Name"
       android:textColor="#cccccc"/>

在 Java Activity 文件中,

public class MainActivity1 extends Activity
 {
   TextView t1;
   public void onCreate(Bundle onSavedInstance)
      {
         setContentView(R.layout.xmlfilename);
          t1 = (TextView)findViewbyId(R.id.textview);
      }
 }
于 2016-07-05T17:28:22.190 回答
2

你应该使用 ButterKnife Library http://jakewharton.github.io/butterknife/

并像使用它一样

@InjectView(R.id.texto)
TextView err;

在 onCreate 方法中

ButterKnife.inject(this)
err.setText("Escriba su mensaje y luego seleccione el canal.");
于 2016-09-28T14:00:43.357 回答
2

正如您给出的静态文本

err.setText("Escriba su mensaje y luego seleccione el canal.");

它不会改变,它会保持不变。

textview 的动态文本示例是:

MainActivity.java
package com.example.dynamictextview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    int count = 0;
    Button clickMeBtn;
    TextView dynamicText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        clickMeBtn = (Button) findViewById(R.id.button_click);
        dynamicText = (TextView) findViewById(R.id.textview);

        clickMeBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                count++;
                dynamicText.setText("dynamic text example : " + count);

            }
        });

    }

}

For activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.dynamictextview.MainActivity" >

    <Button 
        android:id="@+id/button_click"
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="click me"
        android:layout_centerInParent="true" />

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" 
        android:layout_below="@id/button_click"
        android:layout_centerHorizontal="true"
        android:textSize="25sp"
        android:layout_marginTop="20dp"
        />

</RelativeLayout>
于 2015-12-17T07:41:57.360 回答
1

您的代码没问题,您正在加载包含TextViewusing的 .xml setContentView()

   setContentView(R.layout.activity_enviar_mensaje);

然后获取 TextView inside 的引用activity_enviar_mensaje.xml,并设置文本:

err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

问题是您的 TextView 被隐藏了ListView

在此处输入图像描述

于 2018-02-06T23:01:44.913 回答
1

我知道它是 2 个月,但是是的

替换你的代码

Private TextView err;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enviar_mensaje);
    err = (TextView)findViewById(R.id.texto);
    err.setText("Escriba su mensaje y luego seleccione el canal.");
}
于 2019-11-26T20:27:31.857 回答
0

在您的布局中。您的 Texto 不应包含 (android:text=...)。我会删除这条线。保留 Java 字符串或 (android:text=...)

于 2014-12-23T16:35:56.547 回答
0
final TextView err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

你可以在这里找到你需要的关于 textview 的一切

于 2019-02-11T06:25:38.470 回答
0

Kotlin 解决方案

要使用字符串进行设置,只需使用它

view.text = "My string"

要对资源值执行相同操作,请添加此扩展属性以更轻松地设置文本

view.textRes = R.string.my_string

var TextView.textRes
    get() = 0 // HACK: property requires getter
    set(@StringRes textRes) {
        text = resources.getText(textRes)
    }
于 2020-05-23T01:11:32.620 回答
0

也许您已经在 onResume() 函数中分配了文本

于 2020-06-18T17:16:51.123 回答
0

转到您的 activityMain 并通过从小部件部分添加小部件并通过选择和键入手动更改文本来设置文本。

于 2017-01-17T00:28:28.783 回答