获取当前可见的Android Fragment
Posted
技术标签:
【中文标题】获取当前可见的Android Fragment【英文标题】:Get the current visible Fragment Android 【发布时间】:2014-10-30 06:31:16 【问题描述】:我有片段 A -> B -> C -> D。每个片段,使用 onCreateView
方法,在主 Activity 中更改一个字符串变量。
从 A 到 B 或 C 或 D 一切正常,但是当我按下后退按钮时 - 例如从 C 到 B - 我需要将 MainActivity 的变量刷新为正确的值。我怎样才能做到这一点?当我回到以前的片段时,不会调用 onResume()、onStart()、onCreateView。
编辑,B C D 是同一个类的片段,可以和片段,因为我正在实现一个文件夹目录,带有 B C D 子文件夹目录。我不能使用我认为的标签,因为我不知道我有多少碎片。
【问题讨论】:
【参考方案1】:看看这个例子: https://***.com/a/24042109/2413303
基本上就是在Fragment的构造函数中指定资源ID:
public MyFragment()
super();
titleId = R.string.drawer_myfragment_title;
添加如下界面(在编辑中添加):
public interface GetActionBarTitle
int getActionBarTitleId();
用接口返回这个:
public class MyFragment extends Fragment implements GetActionBarTitle
private int titleId;
@Override
public int getActionBarTitleId()
return titleId;
并在活动中,将以下内容添加到onCreate()
方法中:
getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener()
public void onBackStackChanged()
int backCount = getSupportFragmentManager().getBackStackEntryCount();
if (backCount == 0)
finish();
else
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container);
mTitle = getString(((GetActionBarTitle) fragment).getActionBarTitleId());
getSupportActionBar().setTitle(mTitle);
);
【讨论】:
实现 GetActionBarTitle 给我错误,我不能使用它。【参考方案2】:您可以在 YourActivity 中声明方法进行刷新。
在片段中,只需将 Activity 转换为您的并调用方法。
例如在YourActivity中声明方法:
public void refreshMe()
...
因此,您可以在片段中调用:
((YourActivity)getActivity()).refreshMe();
【讨论】:
好的。什么时候可以调用这个方法? @user3793870 在 onAcivityCreated() 例如以上是关于获取当前可见的Android Fragment的主要内容,如果未能解决你的问题,请参考以下文章
Android 判断当前Fragment是否可见(Visible)