返回时如何通知 Fragment Android
How to notify when come back Fragment Android
在我的例子中有两个片段,第一个是 FragmentA,第二个是 FragmentA 中的 FragmentB,当点击按钮调用时
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();
}
你也可以使用回调,看这个URL:
enter link description here
在我的例子中有两个片段,第一个是 FragmentA,第二个是 FragmentA 中的 FragmentB,当点击按钮调用时
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();
}
你也可以使用回调,看这个URL: enter link description here