Fragment Android回来时如何通知

问题描述

在我的情况下,当单击按钮时,有两个片段,第一个是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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...