我正在尝试使用Actionbar标签和片段实现一个非常基本的导航结构。基本上我有三个片段,使用操作栏上的选项卡进行选择。这些片段中的每一个都是列表视图,应该允许用户选择项目并打开详细视图。
我想知道从现有片段向屏幕添加新片段的最佳方法。我目前的详细视图都是作为活动实现的(由于操作栏标签不存在,这显然不太理想,使用后退按钮导航返回到选项卡1,无论当前位置如何)。
我在MainActivity中添加了所有列表片段;
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (tab.getPosition() == 0) {
Frag1 frag = new Frag1();
ft.replace(android.R.id.content, frag);
} else if (tab.getPosition() == 1) {
Frag2 frag = new Frag2();
ft.replace(android.R.id.content, frag);
} else if (tab.getPosition() == 2) {
Frag3 frag = new Frag3();
ft.replace(android.R.id.content, frag);
}
}
我需要在这些片段上实现什么来启动详细信息视图?我尝试过这样的事情,但导航仍然无法按照我的意愿行事。
private void onListItemClick(View v, int pos, long id) {
Log.d(TAG, "Clicked at position: " + pos);
NewsModel selectedModel = newsItems.get(pos);
Log.d(TAG, "Item: " + selectedModel.getTitle());
NewsDetailFragment fragment = NewsDetailFragment.newInstance(selectedModel);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content, fragment);
ft.addToBackStack(null);
ft.commit();
我一般来自iOS世界,所以我的一些范例可能与Android的运作方式有些不同。
谢谢!
答案 0 :(得分:1)
正如Supporting Tablets and Handsets training document中所述,使用Fragment
显示主/详细视图的标准方法是在手机上单独进行活动(当您没有足够的空间来显示两者时)在平板电脑上并排。 SDK附带了一个Master / Detail示例,它实现了这个建议(如果您使用的是Eclipse,请转到New-> Other-> Android-> Android Activity-> Master / Detail Flow)。
您可以将此培训与您已有的选项卡代码相结合(选择选项卡时替换左侧片段,也可能还希望在选择选项卡时删除右侧的详细视图)以获得适用于所有Android设备的布局。
您可能会发现一些有用的其他信息是Multi-pane layout design guidelines和整个Fragment Training set。