如何在 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
方法
我有一个主 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
方法