android - 为什么我们在 onCreate() 中设置内容 View 而不是在 onStart() 或 onResume() 中?

标签 android

我创建了一个小程序来在 onResume() 方法而不是 onCreate() 上设置内容 View ,它工作正常。

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();
            }
        });
    }
}

最佳答案

由于 Activity 的 onCreate() 只被调用一次,因此这是大多数初始化应该进行的地方:调用 setContentView(int) 来填充 Activity 的 UI,使用 findViewById 以编程方式与 UI 中的小部件交互,调用 managedQuery(android.net.Uri, String[], String, String[], String) 检索正在显示的数据的游标等。

onResume()onStart()中的内容设置为setContentView()(多次调用)效率低下> 是一项繁重的操作。

关于android - 为什么我们在 onCreate() 中设置内容 View 而不是在 onStart() 或 onResume() 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33973399/

相关文章:

java - Android Studio 找不到 JAVA_HOME

Android Gradle 构建 : duplicate entry: META-INF/app_release. kotlin_module

android - Android 中 ID 的命名约定

android - 检测 ExpandableListView 组点击

android - 带有自定义 View 的 AlertDialog 不是 "resize"

Android google.navigation Intent 模式?

android - 如何将新的Listview数据附加到无限滚动的ListView

android - 如何将自定义 DLS 或 SoundFonts 加载到 Android MIDI

php - 将应用程序连接到本地主机上的 php 服务器

android - Fragments 和 ViewPagers 的首选项 - Android