好的,我有这段代码:
<?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
答案 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!");