在另一个片段中打开一个片段

时间:2014-02-09 11:16:11

标签: android listview android-fragments

我有一个内部有3个片段的视图寻呼机 但是,第一个片段有一个列表视图 我想点击ListView项目时打开一个新片段 我能够使用此代码使其成功运行:

Fragment FullBrand = new FullBrand();
FragmentTransaction ft = getFragmentManager()
        .beginTransaction();
ft.replace(R.id.framebrands, FullBrand);
Bundle bundle = new Bundle();
FullBrand.setArguments(bundle);
ft.addToBackStack(null);
ft.commit();

然而,当新片段启动时,viewpager仍在那里!
该怎么办?我该如何摆脱它们呢? 谢谢!

2 个答案:

答案 0 :(得分:1)

好像你正试图在视图寻呼机中替换一个片段。

如果要替换视图寻呼机片段(使用它的3个孩子)并显示其他片段,则需要在FragmentActivity中调用事务并将其替换为当前容器。

添加回调到活动,并在单击listview项时替换活动中的整个容器。

添加侦听器的示例

在view pager片段中,声明你的界面:

public interface OnViewPagerClickListener {
    public void onBlaBla(Object arg);
}
片段活动中的

public class MyFragmentActivity implement ViewPagerFragment.OnViewPagerClickListener 

在您的视图中,分页器片段覆盖onAttach&声明接口成员

private OnViewPagerClickListener mCallback;

@Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mCallback =(OnViewPagerClickListener) activity  **try catch this code**
    }

无论你想要什么,都可以调用mCallback.onBlaBla(...) 并在活动中做其余的事...... 这是接口的总结课程:)

有关界面和回调的更多信息here 祝你好运。

答案 1 :(得分:1)

您不应该尝试删除ViewPager,而是可以在DialogFragment中显示新的片段(即FullBrand)。所以,如果你点击它,它将只带你去旧的ViewPager,它不会退出应用程序

要使用 FullScreen 显示对话框片段,请尝试以下代码:

public class NewFragment extends DialogFragment {

private Dialog dialog;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.new_fragment_xml_here, container,
            false);

    return view;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    dialog = new Dialog(getActivity(),
            android.R.style.Theme_Black_NoTitleBar);
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);

    return dialog;
    }
}

然后从ListView项目中调用此NewFragment单击以将其显示为NewScreen,它将看起来像一个新屏幕:

NewFragment fragment = new NewFragment();
fragment.show(fragmentManager, "NewFragment");

我希望它会对你有所帮助。