我正在编写我的第一个Android应用程序并遇到一些麻烦。请考虑以下代码:
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState{
super.onCreate(savedInstanceState);
TextView textView;
textView = new TextView(this);
textView.setTextSize(40);
//textView.setText("TEST");
setContentView(textView);
}
只要setText
行保持评论,此代码就会编译。如果我取消注释,我会收到以下错误:cannot find symbol: variable textView
我在这里做了一些明显错误的事吗?我是android的新手,自从我写了任何java以来已经好几年了(我写了很多C而且我的直觉往往让我误入歧途......)
编辑:
此函数是示例代码的简化: http://developer.android.com/training/basics/firstapp/starting-activity.html
这个例子错了吗?它看起来不像我应该在清单中创建这样一个简单的视图,这看起来像一个java链接器错误给我?我很感激你的回答,但我仍然无法理解错误。
答案 0 :(得分:2)
你出错的几个地方:
- 在尝试引用任何视图之前,您应该致电setContentView()
- setContentView()
获取包含布局的XML文件的名称
- 您需要使用findViewById
@Override
protected void onCreate(Bundle savedInstanceState{
super.onCreate(savedInstanceState);
setContentView(R.layout.name_of_your_xml_file_which_has_the_layout);
TextView textView;
textView = (TextView)findViewById(R.id.id_of_the_textView_as_given_in_your_layout.xml);
textView.setTextSize(40);
textView.setText("TEST");
}
编辑: 给定here的代码动态创建TextView,我的答案包含的方法使用静态布局,只引用java代码中的textView。这是执行此操作的标准方法,因为一旦事情变得复杂,实现动态布局变得非常困难。现在,事情似乎很容易,因为只有一个TextView。但是有了更多的UI元素,你只会招致更多麻烦(在我看来)。我建议你遵循静态布局方法,特别是因为你开始使用Android。
答案 1 :(得分:1)
您可以在布局文件中创建文本视图,如:
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
然后在代码中找到它,然后将其分配给变量:
TextView textView = (TextView)findViewById(R.id.textView1);
// Now you can do whatever you want with this textview
答案 2 :(得分:1)
setContentView(tv)然后将文本设置为textview。你可以这样做。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv= new TextView(this);
setContentView(tv);
tv.setText("hello");
}
}
在您的main.xml
中<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
在您的活动中
TextView textView = (TextView)findViewById(R.id.textView1);
我建议你采取第二部分。您的xml用于定义与MainActivity.java文件中定义的逻辑分离的UI。您对UI所做的任何更改都需要不需要对java文件进行更改。在xml文件中,您可以设置文本视图大小。您无需更改.java文件中的逻辑。
您对.java文件进行的类似更改,不需要在xml中进行更改。