问题描述
在我的情况下,当单击按钮时,有两个片段,第一个是FragmentA,第二个是FragmentA,在FragmentA中
activity.getSupportFragmentManager().beginTransaction().replace(R.id.frameLayoutGallery,myFragment).addToBackStack(null).commit();
然后显示FragmentB,在第二个Fragment(FragmentB)按钮中,单击调用
int backStackId = getFragmentManager().getBackStackEntryAt(0).getId();
getFragmentManager().popBackStack(backStackId,FragmentManager.POP_BACK_STACK_INCLUSIVE);
此后它将显示FragmentA内容,但如何准确捕获isShow FragmentA ??
解决方法
在您的情况下,use可以使用backstack监听器
public class MainActivity extends AppCompatActivity implements FragmentManager.OnBackStackChangedListener{
private FragmentManager fragmentManager;
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
fragmentManager = getSupportFragmentManager();
fragmentManager.addOnBackStackChangedListener(this);}
@Override
public void onBackStackChanged() {
try {
Fragment tempFragment =
fragmentManager.findFragmentById(R.id.view_container);
if (tempFragment instanceof FragmentA)
((FragmentA) tempFragment).callThisMethod();
else if (tempFragment instanceof FragmentB)
//do something
} catch (Exception e) {
e.printStackTrace();
}
}}
,
如果要在FragmentA可见时准确地做某事,可以覆盖FragmentA的onResume
@Override
public void onResume() {
super.onResume();
doSomething();
}
,
您还可以使用callback,请参见以下URL: enter link description here