6

我是安卓新手。我经常使用 Activity 从一个屏幕切换到另一个具有其他功能的屏幕。从主页到热门页面的示例。在那之后,我知道片段,但我以前从未使用过它。因此,如果我的应用程序在屏幕上有多个选项卡,请不要在此处使用 TabHost。每个选项卡的功能非常不同,例如:选项卡主页、选项卡热门、选项卡新闻、选项卡配置文件......就像 Instagram 应用程序。我必须使用它

  1. 将屏幕更改为另一个屏幕的活动,这意味着:我有家庭活动,流行活动,......并在更改屏幕时更改活动。每个活动都有每个布局。
  2. 在一个 Activity 中使用片段。我们有多个片段,例如 HomeFragment、Popular Fragment... 更改屏幕时更换片段。

什么方法更好?我想问什么时候只使用手机屏幕。(小尺寸屏幕,不适用于平板电脑)。

4

2 回答 2

4

重要的是,将 Android 设备更多地视为一个频谱,而不是明确的“手机”与“平板电脑”桶。在许多情况下,您可能希望在屏幕上显示更多medium信息large。有时,这意味着一次显示两个“活动”。

使用 Fragments 几乎不需要开销,但增加了可衡量的灵活性,尤其是在开发过程的早期考虑时。如果你正确使用 Fragments,适应更大的屏幕是非常简单的。然而,有一些“陷阱”可能会让 Fragments 看起来比实际上更令人生畏:

  • Fragment类必须总是被声明public(如果它是一个嵌套类,它必须是static)。

  • 在父级Activity(或FragmentActivity)中,仅添加根Fragmentif savedInstanceState == null。如果您Fragment正确管理状态,一切都会为您处理(滚动位置、EditText 值等)。

  • 父级Activity必须调用 toonSavedInstanceState才能Fragment正确恢复其状态。

  • setRetainInstance(true)应该只用于“无头”片段。这是当您使用没有 UI 且未添加到后台堆栈的 Fragment 时,通常用于执行与生命周期相关的工作。

  • 在 XML 中声明的片段不能用于 a FragmentTransaction(反之亦然)。

将 a视为模块化视图,它在发生重要事情时Fragment为其提供挂钩(回调) 。决定,根据可用空间,是启动一个新的Activity,还是显示一个新的。ActivityActivityFragment

于 2013-09-19T03:25:11.590 回答
1

您可以使用任何一种方式。如果您决定使用活动解决方案,请创建一个包含所有选项卡功能的基本活动类。您不想在每个活动中一遍又一遍地实现它。

public class BaseActivity extends Activity {

    @Override 
    public void onCreate(...) {
        // Init tabs
    }

    // Methods for tab handling
}

每个 Activity(Popular、Profile、Home 等)都扩展 BaseActivity

public class PopularActivity extends BaseActivity {

    @Override
    public void onCreate(...) {
        super.onCreate(...);

        // Init only the popular activity elements here
    }
}

这样,您只需实现一次选项卡功能并在每个活动中获取它。

于 2013-09-19T03:24:49.717 回答