与onCreate相比,在onCreate内部进行实例化。为什么?

时间:2013-06-20 05:46:15

标签: android instantiation android-lifecycle

Android代码的大多数示例都是如下所示的示例2完成的,为什么它比examaple 1中显示的要好得多?

示例1

    class TestActivity extends Activity() {

    HelperClass helperClass = new HelperClass();

    EditText extiText = (EditText) findViewById(R.id.editText1);

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


    }

    }

示例2

    class TestActivity extends Activity() {

    HelperClass helperClass;

    EditText editText;

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

    helperClass = new HelperClass();

    editText = (EditText) findViewById(R.id.editText1);

    }

    }

1 个答案:

答案 0 :(得分:3)

你可以做到

HelperClass helperClass = new HelperClass(); 

但你做不到

 EditText extiText = (EditText) findViewById(R.id.editText1); 

与示例1相同。

因为在onCreate调用setContentView(R.layout.layout);时加载的布局文件以及R.id.editText1是此布局的一部分,所以在布局加载之前,您无法访问它。

了解onCreate()