如何在 android 中的 child activity 按下后退按钮时调用片段函数

How to call a fragment function on pressing back button from a child activity in android

我有一个主 activity,它有通过 FragmentPagerAdapter 实现的选项卡式片段。从其中一个片段中,我打开了一个新的 activity(它设置了主页按钮)。我按主页按钮 return 到主要 activity(带片段)。此时,我希望能够重新创建片段屏幕。此时调用的函数是什么?

我开始知道主要 activity 的 onRestart() 将被调用。在此函数中,我尝试使用以下方法调用片段的方法:

ExampleFragment myFragment = (ExampleFragment) mPagerAdapter.getItem(0).<myDesiredMethod>();

在这里,我遇到了一个问题,myFragment 正在获取片段的变量,但它们都是空的。它们未初始化,就像生成新的 (child) activity 时一样。

如何在退出 child activity 时重新创建片段屏幕?

谢谢。

要回答您的标题问题,请在 FragmentPagerAdapter 中使用以下代码。

private FirstFragment mFirstFragment;
private SecondFragment mSecondFragment

@Override
public Object instantiateItem(ViewGroup container, int position) {
    switch(position) {
        case 0:
            mFirstFragment = (FirstFragment)super.instantiateItem(container, position);
            return mFirstFragment;
        case 1:
            mSecondFragment = (SecondFragment)super.instantiateItem(container, position);

            return mSecondFragment;
    }
    return super.instantiateItem(container, position);
}

public boolean isFragmentInstantiated(int position) {
    switch(position) {
        case 0:
            if(mFirstFragment != null)
                return true;
            break;
        case 1:
            if(mSecondFragment != null)
                return true;
            break;

    }
    return false;
}

public void doSomethingOnFirstFragment() {
    if(isFragmentInstantiated(0) {
        mFirstFragment.doYaThang();
    }
}

这样,您可以通过从 Activity.

调用适配器的 doSomethingOnFirstFragment() 来调用 Fragment 方法