2

我正在编写我的第一个 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 链接器错误?感谢您的回复,但我仍然无法理解问题所在。

4

3 回答 3

2

你出错的几个地方:

- 你应该setContentView()在尝试引用任何视图之前打电话

-setContentView()采用包含您的布局的 XML 文件的名称

-您需要使用 JAva 代码在布局中引用 TextViewfindViewById

@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");
}

编辑:此处 给出的代码动态创建一个 TextView ,我的答案包含的方法使用静态布局并仅引用 java 代码中的 textView 。这是执行此操作的标准方法,因为一旦事情变得复杂,实现动态布局就变得非常困难。现在,事情似乎很简单,因为只有一个 TextView。但是有了更多的 UI 元素,你只会招来更多的麻烦(在我看来)。我建议您遵循静态布局方法,特别是因为您是从 Android 开始的。

于 2013-03-31T12:30:05.443 回答
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
于 2013-03-31T12:33:23.687 回答
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" />
    

在你的活动中

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

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

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

于 2013-03-31T16:01:05.750 回答