首页 > 解决方案 > 单击 Activity 的其他 Fragments 时,有没有办法关闭 Window Popup。?

问题描述

我在 Fragment-A 中创建了 Window 弹出窗口。如果用户单击其他片段(片段 B 或片段 C),我想关闭它。请您告知如何实现这一目标。

下面是我创建片段的代码

private void setupViewPager(ViewPager viewPager) {
    Adapter adapter = new Adapter(getSupportFragmentManager());
    adapter.addFragment(new FragmentA(), "FragA");
    adapter.addFragment(new FragmentB, "FragB");
    adapter.addFragment(new FragmentC, "FragC");
    viewPager.setAdapter(adapter);
    }
static class Adapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragments = new ArrayList<>();
    private final List<String> mFragmentTitles = new ArrayList<>();

    public Adapter(FragmentManager fm) {
        super(fm);
    }

    public void addFragment(Fragment fragment, String title) {
        mFragments.add(fragment);
        mFragmentTitles.add(title);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitles.get(position);
    }

用于创建 PoPup 的代码

        View popupView = getLayoutInflater().inflate(R.layout.popup, 
    null);
        popupWindow = new PopupWindow(popupView, 
   ViewGroup.LayoutParams.WRAP_CONTENT, 
   ViewGroup.LayoutParams.WRAP_CONTENT, false);
        popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
        popupWindow.showAsDropDown(popupView, mEditText.getScrollX(), 
   mEditText.getScrollY()-50);
        recyclerView = (RecyclerView) 
   popupView.findViewById(R.id.popuprelativelayout);
        linearLayoutManager = new LinearLayoutManager(getContext());
        recyclerView.setLayoutManager(linearLayoutManager);
        adapterString = new AdapterString(popupWindow,userfollowlist, 
   getContext(), mEditText,isWinOpen);
        recyclerView.setAdapter(adapterString);
            isWinOpen = true;
}

已尝试使用以下方法,但无法感知片段的变化。

@Override
public void onHiddenChanged(boolean hidden) {
    if(!hidden)
    {
        if(isWinOpen) {
            popupWindow.dismiss();
            isWinOpen = false;
        }
    }
      }

如前所述,如果您能建议在单击其他片段时如何关闭弹出窗口,将不胜感激。

在此先感谢您的帮助!!!!!

标签: androidandroid-layoutandroid-fragments

解决方案


推荐阅读