实现Android Activity时,Java无法找到符号

时间:2013-03-31 12:26:26

标签: java android android-activity

我正在编写我的第一个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链接器错误给我?我很感激你的回答,但我仍然无法理解错误。

3 个答案:

答案 0 :(得分:2)

你出错的几个地方:

- 在尝试引用任何视图之前,您应该致电setContentView()

- setContentView()获取包含布局的XML文件的名称

- 您需要使用findViewById

在JAva代码中对布局中的TextView进行引用
@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)

    首先
  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");
     }
    }
    
  2. 在您的main.xml

    <TextView
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />
    
  3. 在您的活动中

        TextView textView = (TextView)findViewById(R.id.textView1);
    

    我建议你采取第二部分。您的xml用于定义与MainActivity.java文件中定义的逻辑分离的UI。您对UI所做的任何更改都需要不需要对java文件进行更改。在xml文件中,您可以设置文本视图大小。您无需更改.java文件中的逻辑。

    您对.java文件进行的类似更改,不需要在xml中进行更改。