从父活动中筛选筛选器上的片段

时间:2017-05-18 09:14:46

标签: android android-fragments android-activity

我有这种情况,我有一个活动(A)有2个标签(即两个片段FA1,FA2)。活动A中的appBar有一个过滤器按钮,根据选择的选项卡打开不同的活动(B& C)。 这已由A中的以下代码处理。

  toolbar.findViewById(R.id.filterimage).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = null;
            if (tabLayout.getSelectedTabPosition() == 1) {
                i = new Intent(A.this, B.class);

            } else {
                i = new Intent(A.this, C.class);
            }
            startActivityForResult(i, 221);

        }
    });

在两个片段中显示数据的所有api命中都在相应的片段中进行。从活动B或C中选择的过滤器返回到活动A. 现在,根据所选的过滤器,我想再次从它的父活动中刷新片段(FA1或FA2),即。一个。 但我无法这样做。 我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

@Override
protected void onResume() {
    super.onResume();

 // Where currentFragment is the fragment you want to refresh

 getSupportFragmentManager()
.beginTransaction()
.detach(currentFragment)
.commitNowAllowingStateLoss();

 getSupportFragmentManager()
.beginTransaction()
.attach(currentFragment)
.commitAllowingStateLoss();

 }

在这里你必须检查来自B或C活动的特定情况,否则不要刷新。

答案 1 :(得分:0)

对两者使用不同的请求代码,如下所示:

toolbar.findViewById(R.id.filterimage).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = null;
        if (tabLayout.getSelectedTabPosition() == 1) {
            i = new Intent(A.this, B.class);
            startActivityForResult(i, 221);

        } else {
            i = new Intent(A.this, C.class);
            startActivityForResult(i, 222);
        }

    }
});

然后取决于请求代码获取结果并更新片段数据。