【问题标题】:Starting new Activities and adding them to a Fragment-based layout启动新活动并将它们添加到基于片段的布局中
【发布时间】:2012-07-07 19:51:34
【问题描述】:
我对 Fragments API 很陌生,这是我的问题:假设我有一个 Activity 和一个带有标签的 ActionBar。假设我想从我的应用程序启动消息传递应用程序,通常它将作为新的Activity 启动。是否可以将消息Activity 作为新标签添加到我的Activity?我怎样才能达到这个效果?提前致谢。
【问题讨论】:
标签:
android
android-fragments
android-activity
android-actionbar
【解决方案1】:
在您的 onCreate 方法中执行以下操作
Context context = getApplicationContext();
ActionBar actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab PlayerTab = actionbar.newTab().setText("Fragment A");
ActionBar.Tab StationsTab = actionbar.newTab().setText("Fragment B");
Fragment PlayerFragment = new AFragment();
Fragment StationsFragment = new BFragment();
PlayerTab.setTabListener(new MsgTabsListener(PlayerFragment, context));
StationsTab.setTabListener(new MsgTabsListener(StationsFragment, context));
actionbar.addTab(PlayerTab);
actionbar.addTab(StationsTab);
然后添加类MsgTabListener并执行以下操作
class MsgTabsListener implements ActionBar.TabListener {
public Fragment fragment;
public Context context;
public MsgTabsListener(Fragment fragment, Context context) {
this.fragment = fragment;
this.context = context;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
//Start a new activity here with respect to your main context.
context.StartActivity(new Intent(....));
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(R.id.fragment_container, fragment);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}
如果您正在寻找好的片段 API 教程,那么 Lars Vogel 有很好的解释。
http://www.vogella.com/articles/Android/article.html#fragments_tutorial