我有这种情况,我有一个活动(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),即。一个。 但我无法这样做。 我怎样才能做到这一点?
答案 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);
}
}
});
然后取决于请求代码获取结果并更新片段数据。