【问题标题】:Android - Set text to TextViewAndroid - 将文本设置为 TextView
【发布时间】:2013-10-27 10:49:40
【问题描述】:

我目前正在为一个学校项目学习一些 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>

不工作是指显示的文本在任何时候都不会改变...

【问题讨论】:

  • is not working 是什么意思?如果您回答 未显示 那么请发布 XML 布局?
  • 您显示的代码看起来不错。您是否遇到任何错误/崩溃?
  • err 被声明为文本视图吗? TextView err;
  • 是的,这个错误已经很好地声明了..
  • 我认为你的 textview 被 listview 隐藏了

标签: android textview


【解决方案1】:

在您的布局 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");

【讨论】:

  • 如果我全局设置myAwesomeTextView 会崩溃,因为必须在onCreate 中调用findViewById?
  • @TimothyLeung : 将变量声明为 global ,并且仅在 onCreate() 中调用 findById
  • 如果你想在 onCreate() 方法之外访问它,你只需要将它声明为类上的一个字段
  • 是否可以设置没有ID的文本? My Question link
【解决方案2】:

将此代码放入您的 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");

【讨论】:

    【解决方案3】:

    好吧,@+id/listaVista ListView 是在@+id/texto 之后绘制的。所以在 ListView 中更改:

    android:layout_below="@+id/editText1"
    

    到:

    android:layout_above="@+id/texto"
    

    另外,由于列表是在 textview 之后绘制的,我发现在 TextView 中使用 android:layout_alignRight="@+id/listaVista" 很危险。所以删除它并找到另一种对齐方式。

    编辑 再看看你的布局,我认为这是你真正想要的:

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

    【讨论】:

    • 非常感谢您提供的 xml...但不幸的是它并没有解决原来的问题...文本视图仍然显示“TextView”而不是“”Escriba su mensaje y luego seleccione el canal。”...有什么想法吗???
    • @user2471107 尝试从布局文件中删除 TextView 中的文本,然后检查。如果仍然不起作用,请发布您的输出屏幕截图。
    【解决方案4】:

    在布局文件中。

    <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!");
    

    【讨论】:

      【解决方案5】:

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

      输出:你好

      【讨论】:

        【解决方案6】:

        我遇到了类似的问题。原来我有两个具有相同 ID 的 TextView 对象。它们位于不同的视图文件中,因此 Eclipse 没有给我错误。尝试在 TextView 中重命名您的 id,看看是否不能解决您的问题。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            在您的 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/姓名”) 在 strings.xml 中,您使用该标识符名称来分配文本,

            【讨论】:

              【解决方案9】:

              试试这个:

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

              确保导入 TextView。

              【讨论】:

                【解决方案10】:

                请更正以下行:

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

                到:

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

                【讨论】:

                  【解决方案11】:

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

                  【讨论】:

                    【解决方案12】:

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

                    show_alert = (TextView)findViewById(R.id.show_alert);
                    show_alert.setText("My Awesome Text");
                    

                    【讨论】:

                      【解决方案13】:

                      您可以像下面这样以编程方式在 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" />
                      

                      【讨论】:

                        【解决方案14】:

                        这应该可以解决问题:

                        TextView.setText("test");
                        

                        【讨论】:

                        • 应该是.setText(注意大写“t”)
                        【解决方案15】:

                        正如你给出的静态文本

                        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>
                        

                        【讨论】:

                          【解决方案16】:

                          你应该使用 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.");
                          

                          【讨论】:

                          • 当一个简单的原生解决方案就足够了,你为什么推荐一个库?
                          【解决方案17】:

                          您的代码没问题,您正在使用setContentView() 加载包含TextView 的.xml:

                             setContentView(R.layout.activity_enviar_mensaje);
                          

                          然后在activity_enviar_mensaje.xml里面获取TextView的引用,并设置一个文本:

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

                          问题是你的TextView被ListView隐藏了:

                          【讨论】:

                            【解决方案18】:

                            我知道是 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.");
                            }
                            

                            【讨论】:

                              【解决方案19】:

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

                              【讨论】:

                                【解决方案20】:

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

                                【讨论】:

                                  【解决方案21】:
                                  final TextView err = (TextView)findViewById(R.id.texto);
                                  err.setText("Escriba su mensaje y luego seleccione el canal.");
                                  

                                  您可以找到有关 textview here 的所有信息

                                  【讨论】:

                                    【解决方案22】:

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

                                    【讨论】:

                                      【解决方案23】:

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

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 2012-09-13
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2011-03-17
                                        • 2015-12-05
                                        • 2012-11-08
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多