Android TextView setText

时间:2013-12-29 14:17:21

标签: android settext

好的,我有这段代码:

<?xml version="1.0" encoding="utf-8?">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"
android:orientation="vertical">

<TextView
    android:id="@+id/Text"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_gravity="center"
    android:text="Text"/>
</LinearLayout>

(主要活动)如下:

TextView text = (TextView) findViewById(R.id.Text);
text.setText("Text Replacement!");

这不替换文本,我确实有类和主要方法。 onCreate等。

似乎XML文件是唯一一个从中获取值的文件,如果没有android:text它什么也没显示。

我基本上只想通过.setText函数更改文本,我做错了什么?

由于

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView) findViewById(R.id.Text);
text.setText("Text Replacement");
  }
}


Layouts for files: /storage/emulated/0/AppProjects/New/res/layout/main.xml
                   /storage/emulated/0/AppProjects/New/gen/com/mycompany/New/R.java
                   /storage/emulated/0/AppProjects/New/src/com/mycompany/new/MainActivity.java

7 个答案:

答案 0 :(得分:2)

在setContentView()之后移动findViewById,并更改变量名称以遵循Java约定:

public class MainActivity extends Activity {

    @Override
    public void onCreate(savedInstanceState){
        super.onCreate(Bundle savedInstanceState);
        setContentView(R.layout.main);

        //this line should be called after you inflate your view with setContentView
        //so move it here, instead in MainActivity body
        TextView text = (TextView) findViewById(R.id.Text);
        text.setText("Text Replacement");
    }
}

此外,您的xml布局中存在拼写错误。改变这一行:

<?xml version="1.0" encoding="utf-8?">

<?xml version="1.0" encoding="utf-8"?>

答案 1 :(得分:1)

将以下内容移至onCreate

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

 @Override
 public void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 TextView tv = (TextView) findViewById(R.id.Text);
 tv.setText("Text Replacement); 

findViewById在当前膨胀的布局中查找id为id的视图。首先,您需要将布局设置为活动,然后初始化视图。

还可以考虑将Text重命名为更合适,更有意义的内容。

编辑:

确保您在main.xml中拥有ID为Text的textview。建立并清理您的项目。

答案 2 :(得分:1)

您无法在setContentView()方法之前找到您的观点。在setContentView()之后移动您的行:

TextView Text = (TextView) findViewById(R.id.Text);
Text.setText("Text Replacement);

另外,请遵循java命名约定,因为对象名称永远不会从Caps开始,但类名称会... ..

答案 3 :(得分:1)

在调用setContentView方法之后,您应该初始化视图并在android中设置适当的属性。

所以下面的代码应该在setcontent视图之后

    TextView text = (TextView) findViewById(R.id.Text);
    text.setText("Text Replacement);

答案 4 :(得分:0)

看起来你在“文字”之前有两个“”

尝试删除一个... 应该是这样的:

android:text="Text"/>

答案 5 :(得分:0)

Ur变量声明为 TextView文本

相反,你应该使用文本,因为在Java中,任何以大写字母开头的东西都被视为一个类,这是一个糟糕的编程习惯!变量应为小写(hungerian notation)!

答案 6 :(得分:0)

首先,考虑使用“wrap_content”或“match_parent”属性代替“200dp”。

<TextView
    android:id="@+id/Text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="Text"/>

然后,请将“Text”变量重命名为“text”。 Java或Android可能认为Text不是你的变量,而是一个类:

TextView text = (TextView) findViewById(R.id.Text);
text.setText("Text Replacement!");