我有一些Actiobar有5个标签,每个标签都有一个片段。在其中3个片段中,我想显示一个Dialog,所以我创建了一个新类:
public static class MyDialogFragment extends DialogFragment {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
static MyDialogFragment newInstance() {
return new MyDialogFragment();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int style = DialogFragment.STYLE_NORMAL;
int theme = android.R.style.Theme_Holo_Dialog;
setStyle(style, theme);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_dialog, container, false);
View tv = v.findViewById(R.id.textV);
((TextView)tv).setText("Dialog using style Normal - Theme AlertDialog - NoActionBar");
return v;
}
}
在这3个片段的每个onCreate方法中,我试图通过使用此方法显示Dialog:
private void showPopup()
{
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment newFragment = MyDialogFragment.newInstance();
newFragment.show(ft, "dialog");
}
现在问题是这个对话框显示在不应该的选项卡上。
例如,我希望标签1 3和5显示对话框 - 有时它会显示它 - 但有时当我点击标签2时会出现此对话框,如果我点击3,则不会显示对话框。 可能是什么问题,我该如何解决?感谢
答案 0 :(得分:1)
您是否尝试在onCreateView()或onActivityCreated()方法中调用showPopup()调用,而不是在onCreate()中调用?
编辑:根据下面的评论,问题与使用ViewPager相关联,后者准备一些下一个要查看的片段,然后调用onCreate()方法。
答案 1 :(得分:0)
所以我找到了一个解决方案 - 在每个片段中我覆盖一个名为setMenuVisibility的方法 - 并测试片段是否可见。如果是 - 我打电话给我的方法。