错误 DialogFragment 从多个片段开始
Error DialogFragment starting in multiple fragments
我目前有一个有 3 个选项卡的 ViewPager。每个选项卡都是一个片段。我做了一个自定义的 dialogFragment 来登录。我希望登录对话框仅在我进入第三个选项卡时打开。在我的 onCreateView 中,我创建了一个新的登录对话框对象并显示。我的问题是,每当我从第一个选项卡切换到第二个选项卡时,该对话框也会出现,但我不想那样。
这是我的 viewpager 适配器
public Fragment getItem(int position) {
switch (position) {
case 0:
return frag1;
case 1:
return frag2;
case 2:
return frag3;
default:
return null;
}
}
我的第 3 个 Frag
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
root = inflater.inflate(R.layout.fragment_tab_annonce, container, false);
DialogFragment loginDialog = new DialogFragment();
loginDialog .show(getActivity().getSupportFragmentManager(), "customLogin");
return root;
}
ViewPager
将创建并保留 "offscreen" 个页面作为性能优化(默认情况下在任一方向都有一个屏幕外页面)。这实际上意味着当您在第 1 页时,第 2 页已经在屏幕外创建。当您从第 1 页切换到第 2 页时,现在会在屏幕外创建第 3 页(并且保留第 1 页以备您要切换回时使用)。
这意味着 onCreateView()
根本不是显示错误消息的正确位置。
您或许可以创建自己的 ViewPager.SimpleOnPageChangeListener
子类并覆盖 onPageSelected()
以显示对话框。
ViewPager.OnPageChangeListener listener = new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (position == 2) {
// show dialog
}
}
};
viewPager.addOnPageChangeListener(listener);
我目前有一个有 3 个选项卡的 ViewPager。每个选项卡都是一个片段。我做了一个自定义的 dialogFragment 来登录。我希望登录对话框仅在我进入第三个选项卡时打开。在我的 onCreateView 中,我创建了一个新的登录对话框对象并显示。我的问题是,每当我从第一个选项卡切换到第二个选项卡时,该对话框也会出现,但我不想那样。
这是我的 viewpager 适配器
public Fragment getItem(int position) {
switch (position) {
case 0:
return frag1;
case 1:
return frag2;
case 2:
return frag3;
default:
return null;
}
}
我的第 3 个 Frag
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
root = inflater.inflate(R.layout.fragment_tab_annonce, container, false);
DialogFragment loginDialog = new DialogFragment();
loginDialog .show(getActivity().getSupportFragmentManager(), "customLogin");
return root;
}
ViewPager
将创建并保留 "offscreen" 个页面作为性能优化(默认情况下在任一方向都有一个屏幕外页面)。这实际上意味着当您在第 1 页时,第 2 页已经在屏幕外创建。当您从第 1 页切换到第 2 页时,现在会在屏幕外创建第 3 页(并且保留第 1 页以备您要切换回时使用)。
这意味着 onCreateView()
根本不是显示错误消息的正确位置。
您或许可以创建自己的 ViewPager.SimpleOnPageChangeListener
子类并覆盖 onPageSelected()
以显示对话框。
ViewPager.OnPageChangeListener listener = new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (position == 2) {
// show dialog
}
}
};
viewPager.addOnPageChangeListener(listener);