我要寻找使用标签导航与福尔摩斯动作条的最佳实践。 什么是选择了其他选项卡时改变片段,添加片段返回堆栈和清除后退堆栈的正确方法。
有没有说明如何做是正确的任何很好的例子或开源项目?
我要寻找使用标签导航与福尔摩斯动作条的最佳实践。 什么是选择了其他选项卡时改变片段,添加片段返回堆栈和清除后退堆栈的正确方法。
有没有说明如何做是正确的任何很好的例子或开源项目?
我不会用ABS直接做到这一点。 一旦你的标签需要片段切换等等。我认为这样做是正确的做法是使用ViewPagerIndicator,它与ABS兼容,你会遇到麻烦。 作为奖励,你也得到了刷卡右左标签之间。 您需要compat的包(像ABS),例如使用可以在找到样本文件夹 。
正如埃德加提到的Android导航指南是一个良好的开端。 但让我加入到标签的打算如何与Android合作的一些意见。
新acitonbar标签应以同样的方式被实现为它工作在谷歌Play应用程式。 这只要你想,你会去一个新的视图/片段/活动和标签将消失选项卡中的一些内容的一些细节表示。
因此,针对Android的选项卡的所有时间,但只在顶部层次应该是不可见的。 如果要缓解用户的导航,你将实现向上按钮,以便用户能迅速回到顶部层次结构,其中标签是可见的。
教程和样本
我个人最喜欢的例子和教程是标签教程上谷歌网页上的动作条教程下。
标签导航的例子还可以在样本项目来与Android的SDK中。 转到: android-sdk\extras\android\support\samples\Support4Demos\src\com\example\android\supportv4\app
,并查找: FragmentTabs.java
或FragmentTabsPager.java
。
如果你想使用ActionBarSherlock您也可以下载ActionBarSherlock ,并期待在/ samples目录中的样本文件夹。 在那里,你必须在标签demoes TabNavigation.java
和TabNavigationCollapsed.java
。 虽然我觉得你应该给动作条教程了一枪。
背部堆叠标签
也可以说你想有一个可见的所有时间标签栏( 尽管并不建议这样做 )。 然后,你必须做出一个自定义的回栈为每个标签,你可以看看这里对于如何实现的例子。
地图和标签
看看使用地图的所有谷歌应用程序。 谷歌使用溢出动作条按钮,以便与您浏览。 所以,我们应该作为开发商,但与谷歌mapsv2为Android标签与地图已经成为如果有人希望这样做容易得多。
我已经做了ActionbarSherlock与碎片和标签多次,它的工作奇妙。
你需要一个TabListener:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.android.wifilogger.R;
public class WifiTabListener implements ActionBar.TabListener {
public Fragment fragment;
public MainTabActivity act;
public WifiTabListener(Fragment fragment, MainTabActivity act) {
this.fragment = fragment;
this.act = act;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(R.id.root, fragment);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
并设置您的TabActivity:
public class MainTabActivity extends SherlockFragmentActivity {
public ActionBar actionBar;
private ActionBar.Tab listTab;
public MenuItem refreshItem;
private SherlockFragment listFragment;
private SherlockFragment mapFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// getActionBar().setDisplayHomeAsUpEnabled(true);
actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
setContentView(R.layout.main);
ActionBar.Tab settingsTab = actionBar.newTab().setText("Settings")
.setTag("settings");
listTab = actionBar.newTab().setText("Wifi List")
.setTag("list");
ActionBar.Tab mapTab = actionBar.newTab().setText("Map").setTag("map");
SherlockFragment settingsFragment = new SettingsFragment();
listFragment = new WifiListFragment();
mapFragment = new WifiMapFragment();
settingsTab.setTabListener(new WifiTabListener(settingsFragment, this));
listTab.setTabListener(new WifiTabListener(listFragment, this));
mapTab.setTabListener(new WifiTabListener(mapFragment, this));
actionBar.addTab(listTab,false);
actionBar.addTab(mapTab,false);
actionBar.addTab(settingsTab,false);
actionBar.selectTab(listTab);
}
在那里你必须改变SettingsFragment,MapFragment和ListFragment到自己的片段。 您也可以在此tabfragments一个由USNG setTargetFragment添加DialogFragment但是这不是你的问题,我猜。
我建议你遵循导航Android的设计模式:
http://developer.android.com/design/patterns/navigation.html