我还处于Android开发的早期阶段,我想创建一个有很多Fragments
的应用。
首先,我看过Eric Burke关于Android Anatomy的演讲,其中说片段无法取代Activity。您无法制作仅包含一个Activity
和多个Fragments
的应用。即使可以完成,数据流也会变得一团糟。
所以,我知道在API < 7
我们可以使用TabActivity
,ActivityGroup
,TabHost
来浏览Activity
。所以这就是我的要求。
我是否可以进行一些导航(例如Tabs/ActionBar
),即使我在切换Activity
时仍然显示,而不使用弃用的方法?即使ActionBar
导航模式已弃用API 21
。
所以也许,任何人都可以给我一些建议,不使用Tabs进行导航。
答案 0 :(得分:0)
我同意你最好不要创建一个只包含一个活动和多个片段的应用程序,也许你想结合ViewPager查看PagerAdapter }。因此,您可以在片段之间滑动而无需Tabs。但ViewPager也可以与标签结合使用。
答案 1 :(得分:0)
我有一个只使用一个活动和几个片段的应用程序。使用操作栏上的按钮或完成后台进程等事件在片段之间切换。
带有两个图标“info”和scan:
的操作栏示例 @Override
public boolean onOptionsItemSelected(MenuItem item) {
FragmentManager fm1 = getFragmentManager();
FragmentTransaction ft1 = fm1.beginTransaction();
MainFragment mainFragment = (MainFragment) getFragmentManager().findFragmentByTag("Main_Fragment");
switch (item.getItemId()) {
case R.id.action_info:
if (fm1.findFragmentByTag("Info_Fragment") == null) { //Check if Fragment is already open
ft1.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.back_enter, R.anim.back_exit);
ft1.replace(R.id.content_layout, new InfoFragment(), "Info_Fragment")
.addToBackStack(null)
.commit();
}
return true;
case R.id.action_scan:
if (fm1.findFragmentByTag("Scan_Fragment") == null) { //Check if Fragment is already open
ft1.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.back_enter, R.anim.back_exit);
ft1.replace(R.id.content_layout, new InfoFragment(), "Scan_Fragment")
.addToBackStack(null)
.commit();
}
return true;
}
}
通过BroadcastRecievers与主要活动进行沟通
答案 2 :(得分:0)
我回答你在评论中提出的问题(并对延迟表示道歉)。
你的问题是:
好的,只是为了说清楚。我想制作一个应用程序,一个商场 目录应用。所以,我需要5个标签,每个标签有2个视图,主要 视图和详细视图(片段或活动,有些是列表 查看,有些是寻呼机视图)。例如,在标签2中,将有商城 租户(listview),当你点击其中一个项目时,它会弹出 租客的详细信息。在另一个标签上,我们说我们有促销活动 如果我们单击一个选项卡,它们与选项卡2(列表视图)具有相同的视图 该项目,它将带我们到详细视图。
所以,我想从应用程序中得到的是,所有导航都将使用 选项卡,即使单击,操作栏/导航选项卡也不会移动 列表项并将我们带到详细视图。那么,我应该创建1 所有片段的活动,或3个活动(主菜单,促销, 租户)每个活动有2个片段(我有2页菜单 将带有查看寻呼机)?我非常感谢你的回答 我的问题。真的,非常感谢
这是您的重要要求:the action bar/navigation tab will not move even if I click the list item and bring us to the detail view.
通过多于1项活动,您无法做到这一点。请记住,在任何给定时间,您只能有1个活动active
(无双关语)。这意味着,您的活动将托管他们自己的操作栏/导航选项卡版本。这反过来意味着,如果您有多个活动,当您在它们之间进行转换时,您的操作栏将不可避免地发生变化。您可以通过在所有活动中使用相同的操作栏来尝试解决此问题,但这并未改变此论点。
您的应用程序看起来很简单,可以处理1个活动和2个片段 - 每个屏幕/选项卡有1个托管列表视图(您的详细视图可能是一个对话框,因为您希望它弹出&#39;弹出&# 39)。
只有当您开始添加越来越多的功能时,添加多个活动的价值才会变得明显。我最近(几个小时前)回答了关于碎片和活动的另一个问题。我认为阅读可能有帮助:Why not always use fragments with one activity
如果您有任何疑问,请告诉我,但请添加@kha 我收到通知,可以更快地回答你。