gpt4 book ai didi

Android - Activity onCreate 和 fragment onCreate

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:20 26 4
gpt4 key购买 nike

我对 Android 编程还是个新手,所以这个问题很基础。我在 Internet 上看到很多代码示例,其中 UI 组件(如 TextView)在 Activity 的 onCreate() 方法中被初始化和访问。

当我使用 Android Studio 创建一个新项目 - FirstApp - 使用默认设置时,一个名为 MainActivity 的空白 Activity 随之而来 activity_mainfragment_main,我可以立即将其编译成 APK,将其部署到我的设备上,然后我会看到一个标题为“FirstApp”的屏幕,左上角的 TextView 显示“Hello world!” .

如果我给 TextView 一个 ID textview1,并创建一个成员变量,TextView myTextView;,那么我可以在Activity 的 onCreate() 方法,就像这样(当然没有编译错误):

    @Override
protected void onCreate (Bundle savedInstanceState)
{
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
myTextView = (TextView) findViewById (R.id.textview1);
myTextView.setText ("Hello tablet!");

if (savedInstanceState == null)
{
getSupportFragmentManager().beginTransaction().add (R.id.container,new PlaceholderFragment()).commit();
}
}

但是,如果我编译并运行 APK,它会导致“不幸的是,FirstApp 已停止”。消息。

我之前通过将访问 UI 组件的启动代码移动到 Activity 的 onStart() 方法中解决了这个问题,如下所示:

    @Override
protected void onStart()
{
super.onStart();
myTextView = (TextView) findViewById (R.id.textview1);
myTextView.setText ("Hello tablet!");
}

这会产生一个工作 APK,左上角有一个 TextView 显示“Hello tablet!” - 我的简单问题有两个...

  1. 如果项目使用 Fragments 那么我是否应该完全预料到 UI 组件不能在 Activity 的 onCreate() 方法中访问,正如我在 Internet 上看到的大量示例代码一样,可能是因为它们尚未创建?
  2. 我可以在 Activity 的 onStart() 方法中访问 UI 组件吗( 有效)- 还是我应该做其他事情?之前我也用过Fragment的onCreateView方法,但是访问Fragment内部UI组件最好的地方其实是Fragment的onCreate()方法,我还没试过?

我还注意到,当您创建新项目时,Android Studio 默认 Fragment 的 onCreate() 方法没有提供 stub ...但是 onCreateView 确实如此,并且生命周期文档暗示(对我而言,无论如何)这可能是做这种事情的最佳场所。

感谢任何关于此的指导。

最佳答案

fragment transaction commit命令只是将事务放入Que中——事务会在未来的某个时间被处理。这就是为什么您不能在创建时直接使用它的原因。

我建议您使用 fragment 来封装它们的 Ui 行为 - 我不会从 Activity 中显式更改 fragment 的 Ui 元素。

fragment 内的 OnCreateView 是初始化 fragment 的 Ui 元素的好地方,因为它会在 fragment View 创建时调用。

开始时使用 fragment 非常棘手和痛苦,但根据我的经验,它们确实有助于创建更加模块化的代码。

我建议您在开始一个严肃的项目之前阅读文档中有关 fragment 的更多信息。 http://developer.android.com/guide/components/fragments.html

关于Android - Activity onCreate 和 fragment onCreate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21778058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com