首页 > 解决方案 > EditText & Button 的声明位置

问题描述

public class MainActivity extends AppCompatActivity {
  public static final String NAME = "android.example.br.CUSTOM_INTENT";

  EditText edt = (EditText)findViewById(R.id.editText);
  Button btn = (Button)findViewById(R.id.button2);

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


  }
}

有人能告诉我为什么我不能从onCreate函数中新建 EditText、Button。

  public static final String NAME = "android.example.br.CUSTOM_INTENT";

  EditText edt;
  Button btn;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (Button)findViewById(R.id.button2);
    edt = (EditText)findViewById(R.id.editText);

我知道它是这样工作的
是因为一切(按钮,editText ...)都将加载到onCreate函数中吗?

如果有什么没有清除,对不起我的英语

标签: android

解决方案


您不能findViewById()在方法之外编写,onCreate()因为每个活动都有自己的生命周期,并且onCreate()方法是第一个初始化我们在布局文件中设置的视图的所有对象的方法。所以,我们不能在onCreate()方法之前初始化它们

onStart()调用该方法之后,onResume()在我们的活动对用户可见并准备好进行用户交互的地方调用 then。


推荐阅读