我有片段A - > B - > C - > D.使用方法onCreateView
的每个片段都会更改主Activity中的String变量。
从A到B或C或D一切正常,但是当我按下后退按钮时 - 例如从C到B-我需要将MainActivity的变量刷新到正确的值。我怎样才能做到这一点? onResume(),onStart(),当我回到之前的片段时,不会调用onCreateView。
编辑,B C D是同一个Class'片段,可以是片段,因为我正在实现一个文件夹目录,带有B C D子文件夹目录。我认为我不能使用标签,因为我不知道我有多少片段。
答案 0 :(得分:2)
看看这个例子: https://stackoverflow.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);
}
}
});
答案 1 :(得分:0)
您可以在YourActivity中声明方法以进行刷新。
在片段中只是将Activity转换为你的并调用方法。
例如,在YourActivity声明方法中:
public void refreshMe(){
...
}
因此,在您的片段中,您可以致电:
((YourActivity)getActivity()).refreshMe();