1

以下程序强制退出并崩溃,我不明白为什么,

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */

    TextView tv = (TextView) findViewById(R.id.text);
    Button btn1 = (Button) findViewById(R.id.button1);

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void clicked(View v) {

        tv.setText(btn1.getText());
    }
}

但移动后

TextView tv = (TextView) findViewById(R.id.text);
Button btn1 = (Button) findViewById(R.id.button1);

在 clicked 函数内部它可以工作,这是为什么呢?

谢谢你的帮助..

4

2 回答 2

6

findViewById()需要在之后调用setContentView(),否则总是返回null。

于 2012-06-28T16:39:10.967 回答
5

使用以下代码,它将开始工作。

在 onCreate() 中使用 setContentView() 之前,您正在使用 findViewById(),这将返回 null。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
/** Called when the activity is first created. */

private TextView tv;
private Button btn1;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv = (TextView) findViewById(R.id.text);
    btn1 = (Button) findViewById(R.id.button1);
}

public void clicked(View v) {

    tv.setText(btn1.getText());
}
}
于 2012-06-28T16:42:24.600 回答