Android:切换到片段内的新片段?

时间:2013-02-17 14:39:54

标签: java android android-fragments android-activity

我有一个MainActivity的Android应用程序,我这样做是为了在onCreate中创建导航标签:

ActionBar myActionBar = getActionBar();
myActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = myActionBar.newTab().setText("FirstTab").setIcon(R.drawable.first_tab)
    .setTabListener(new TabListener<FirstTabFragment>(this, "FirstTab", 
    FirstTabFragment.class));
... more tabs ...

TabListener,我在developer.android.com上使用它: http://developer.android.com/reference/android/app/ActionBar.html#newTab()

public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
    ...
    public TabListener(Activity activity, String tag, Class<T> clz) { ... }
}

因此,如果用户点击了第一个标签页,我的片段FirstTabFragment就会被调用并执行onCreateView

我的问题是,如果用户现在点击按钮,我会执行以下操作,但我不知道如何切换到下一个片段:

private OnClickListener firstTabListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v == button1) {
            Intent intent = new Intent(???, MyDetailsFragment.class);
            startActivity(intent);
        } else if (...) {
            ...
        }
    }
};

MyDetailsFragment应显示所选项目的详细信息(按钮单击),因此我想深入查看详细信息片段,并希望为新片段提供一些额外数据,因此详细信息片段知道哪些详细信息它应该显示哪个选定的项目。 选定的选项卡不应更改,后退按钮应返回FirstTabFragment页面。

我想我应该开始一个新片段,但这是不可能的,方法startActivity的名称告诉我,我开始一个新活动,而不是一个片段。所以,我必须使用MainActivity并将新片段放入其中? (我不使用android-support-v4.jar库,因为我只针对Android 4设备)

我该如何解决这个问题?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

从片段中,调用托管活动上的方法,告诉它有关按钮单击事件的信息。然后,活动可以做任何适当的事情。

就我个人而言,我认为在绝大多数情况下完全取代选项卡的内容是不合适的,但我们当然欢迎你这样做。