我有一个内部有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仍在那里!
该怎么办?我该如何摆脱它们呢?
谢谢!
答案 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");
我希望它会对你有所帮助。