【问题标题】:Fragment Activity Handling片段活动处理
【发布时间】:2012-01-30 07:12:25
【问题描述】:

我正在学习 Android 以移植到我创建的 iOS 应用程序。无论是通过 ActivityGroup 还是 FragmentActivity,我都无法理解如何同时在屏幕上显示多个活动活动。 ActivityGroup 已被弃用,但似乎是最好的方法。

在深入了解更多细节之前,我可以使用一些帮助来确定正确(或最佳)的方法。

这是我要创建的内容:

应用应分为三个视觉部分: 1) 持续存在的动态横幅的前 50dp。 2) 中间的主要内容区域,用于带有图标的 viewpager 仪表板,允许导航到其他活动并替换自身。 3) 底部 30 dp 音乐播放栏。

基本上,我希望广告栏和播放器栏独立于主要内容区域工作。例如,当在主要内容区域中按下按钮时,我希望将主要内容区域替换为新活动,例如曲目列表视图、网络视图、地图视图等。后退按钮将返回仪表板视图分页器的主要内容区域。

在某些情况下,我希望能够隐藏顶部和底部栏以使主要内容区域全屏显示,以及我希望全屏显示活动以在视觉上替换所有 3 个的情况(例如访问邮件撰写者意图、联系人意图等)

我已经能够将 FragmentActivity 组合在一起,将应用程序分为顶部片段、由 FragmentActivity 控制的中间视图页面和底部片段,但这似乎不是最好的方法,因为片段不是活动自己并用新活动替换视图寻呼机将需要替换整个 FragmentActivity 本身。

直言不讳,实现这种格式的最佳布局方法是什么(支持 2.1+)。

谢谢, 詹姆斯

添加当前代码:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <fragment
        android:name="com.dmi.AnywhereArtist.AdFragment"
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:id="@+id/ad_fragment" >
    </fragment>
    <android.support.v4.view.ViewPager
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:id="@+id/main_pager"
    android:layout_weight="100" 
    android:background= "#00aa00" />
    <fragment
        android:name="com.dmi.AnywhereArtist.PlayerFragment"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:id="@+id/player_fragment" >
    </fragment>
</LinearLayout>

【问题讨论】:

    标签: android android-fragments android-viewpager activitygroup


    【解决方案1】:

    使用片段。

    要记住的重要一点是,Android 一次只允许运行一个 Activity,即使屏幕上可以看到多个 Activity。

    片段通过允许您采用模块化应用程序组件并将它们组合在一起来解决此问题,同时仍将所有内容保留在单个 Activity 中。

    您尝试做的正是 Fragments 的设计目的。

    (要获得 2.1+ 的支持,请使用支持包:http://developer.android.com/sdk/compatibility-library.html。不过,请记住,支持包不支持 MapFragments。)

    【讨论】:

      【解决方案2】:

      我在理解如何同时在屏幕上显示多个活动活动时遇到了一些麻烦

      那是因为你不应该这样做。从一开始这是一个糟糕的方法,现在没有必要了。请使用碎片。

      我已经能够将 FragmentActivity 组合在一起,将应用程序分为顶部片段、由 FragmentActivity 控制的中间视图页面和底部片段,但这似乎不是最好的方法,因为片段不是活动自己并用新活动替换视图寻呼机将需要替换整个 FragmentActivity 本身。

      您描述的方法似乎很好。使用ViewPager 中的片段作为您的主要区域。使用 Android 支持包获得可追溯到 Android 1.6 的片段支持。

      【讨论】:

      • 好的。我想我最大的困惑在于如何将片段视为拥有独立的类,其生命周期就像一个活动。例如,如果我将 ViewPager 用于我的主要区域,我如何将其替换为完全不同的内容(即表格)并将该内容的处理与主视图寻呼机仪表板分开。我不希望主要内容区域充当视图寻呼机,除非它是仪表板。
      • @JamesR.Cahall:“我不希望主要内容区域充当视图寻呼机,除非它是仪表板”——嗯,你不能同时拥有它方法。您不能说用户可以通过滑动离开仪表板但不能通过滑动返回并仍然使用ViewPager。仪表板和ViewPager 串联起来毫无意义,恕我直言,但您使用这些术语的方式可能与 Android 开发人员使用它们的方式不同。无论如何,欢迎您将主要内容区域设置为 FrameLayout 并使用 FragmentTransactions 切换那里显示的片段。
      • 好的。因此,如果我的主要区域是 FrameLayout 而不是 ViewPager,并且我使用 FragmentTransactions,我可以在片段中使用 ViewPager 吗?我见过的所有例子都有 ViewPager 扩展一个 Activity 并在 onCreate() 中创建与 onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 膨胀的片段格式
      • @JamesR.Cahall:“我可以在片段中使用 ViewPager 吗?” - 当然。 “我见过的所有例子都有 ViewPager 扩展 Activity”——ViewPager 从不 extends Activity
      猜你喜欢
      • 2011-07-14
      • 1970-01-01
      • 2011-12-23
      • 2016-11-25
      • 2015-04-12
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多