gpt4 book ai didi

java - 在主要 Activity 显示主要内容 View 之前添加 fragment

转载 作者:行者123 更新时间:2023-11-30 09:35:35 25 4
gpt4 key购买 nike

飞溅

我的主要 Activity UI 启动操作需要 5-10 秒(需要在主 UI 线程上处理)- 所以我想使用启动画面而不是默认的黑色或无响应的主 UI .

下面提供了一个很好的解决splash screen的方法

  • 这是先设置setContentView(R.layout.splash),
  • 然后进行必要的主 UI 处理(在 UI 线程上,但主视图不可见)
  • 准备好后显示 setContentView(R.layout.main)

Android Splash Screen before black screen


fragment 飞溅

我也在使用 fragment ,这通常需要在 fragment 实例化之前调用 setContentView(R.layout.main) - 这样 fragment 管理器就可以在 R 中找到 View stub .layout.main 将 fragment 膨胀到(严格来说 View stub 是不同的东西)。

  • 但我无法在创建 fragment 之前调用 setContentView(R.layout.main),因为这会将初始屏幕替换为(尚未准备就绪的)主屏幕。
  • 我担心我想做的事无法完成?
  • 不幸的是,没有像fragmentTransaction.add(viewNotViewId, fragment);这样的重载

几乎是答案

这里是除了关键之外的所有内容,即 setContentView 在 fragment 事务之前被调用: How do I add a Fragment to an Activity with a programmatically created content view

最佳答案

您可以尝试替换您的 FragmentActivity 中的 fragment ,这里是部分编码的想法:假设您的 fragment 布局如下 (main.xml):

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal">

<LinearLayout android:id="@+id/waiting" ...>
</LinearLayout>

<!-- hidden layout -->
<LinearLayout>
<LinearLayout android:id="@+id/layout_list_items" ...>
</LinearLayout>
<LinearLayout android:id="@+id/layout_detail" ...>
</LinearLayout>
</LinearLayout>

</LinearLayout>

你的 FragmentActivity 是这样的:

public class FragmentsActivity extends FragmentActivity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);

Fragment fragA = new WaitingTransaction();

FragmentTransaction fragTrans = this.getSupportFragmentManager().beginTransaction();
fragTrans.add(R.main.waiting, fragA);
fragTrans.commit();
}

private void afterProcessing(){

//show hidden layout and make the waiting hidden through visibility, then add the fragment bellow...
FragmentTransaction fragTrans = this.getSupportFragmentManager().beginTransaction();
fragTrans.add(R.main.layout_list_items,
new FragmentList());
fragTrans.replace(R.main.layout_detail,
new FragmentB());
fragTrans.commit();
}

}

关于java - 在主要 Activity 显示主要内容 View 之前添加 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11299831/

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