0

我正在这里编写 Android 指南:http: //developer.android.com/training/basics/activity-lifecycle/starting.html并且引用了一个从未创建过的变量

mTextView = (TextView) findViewById(R.id.text_message);

我应该在哪里定义 text_message?

谢谢你的帮助!

更新:我相信从中提取的代码块只是一个示例,而不是与我们在本教程的前一部分中创建的应用程序合并。

4

2 回答 2

1

在这里声明

TextView mTextView; // Member variable for text view in the layout  // Right here

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

在方法之外声明它,通常在类声明之后,使其成为成员变量,因此它可以在类中的任何地方使用,包括内部类和侦听器。你只是不能在同一个地方初始化它,因为你还inflated没有Layout通过调用setContentView()

简短的例子

public class MyActivity extends Activity
{
    TextView mTextView; // Member variable for text view in the layout

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set the user interface layout for this Activity
    // The layout file is defined in the project res/layout/main_activity.xml file
    setContentView(R.layout.main_activity);

    // Initialize member TextView so we can manipulate it later
    mTextView = (TextView) findViewById(R.id.text_message);   // findViewById) looks for the id you set in the xml file, here text_message
}

R.id.text_message被定义在main_activity.xml其中可能看起来像这样

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/text_message"   <!-- this is where the R.id.text_message comes from -->
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"/>
    </LinearLayout>

该文档绝对值得阅读,但您可能想从这里开始,并从创建项目开始阅读一个简短的示例

于 2013-05-30T17:19:17.200 回答
0

使用这种方式在 res/layout/main.xml 文件夹内定义 xml 布局并在 setconentView 中设置。

private TextView mTextView = null; 
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    stContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.text_message);
mTextView.setText("Hello");
}
于 2013-05-30T17:25:42.380 回答