我已经创建了一个小程序,用于在onResume()方法上设置内容视图,而不是onCreate(),并且工作正常。
onResume()
{
setContentView(R.layout.activity_main);
editText1 = (EditText) findViewById(R.id.ed1);
editText2 = (EditText) findViewById(R.id.ed2);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
}
});
}
}
答案 0 :(得分:9)
当一个Activity的onCreate()
被调用一次时,这就是大多数初始化应该去的地方:调用setContentView(int)
来膨胀活动的UI,使用findViewById以编程方式与UI中的小部件交互,调用managedQuery(android.net.Uri , String[], String, String[], String)
来检索正在显示的数据的游标等。
在onResume()
或onStart()
(多次调用多次)中设置内容效率不高,因为setContentView()
是一项繁重的操作。
答案 1 :(得分:2)
你没有onStart或onResume中的setContentView,因为它效率低下。设置布局是一项非常重要的任务。你必须解析XML,创建视图,测量,绘图等。这是你想要运行一次的任务。
在Activity类的生命周期中,onCreate只会被调用一次。 onResume和onStart会被多次调用而不会破坏你的Activity。
答案 2 :(得分:1)
onResume
您可以将其称为serval时间。 onCreate
只是一次。尝试记录它们并跳到其他活动而不是回来。