我们要编写一个应用,在应用用户的一个部分中输入Activity
,称之为PostDetailsActivity
。
在此活动中,我们有一个片段称为PostDetailsFragment
。我们应用Interface
在此片段与活动之间进行通信
public interface changeFragment{
void replaceFragment(Fragment fragment, String backStack);
}
在PostDetailsFragment
我们有帖子及其相关帖子。在recyclerview中列出的相关帖子是一个适配器。当用户点击适配器中的Item时,adaoter的行为如下:
PostDetailsFragment fragment = PostDetailsFragment.newInstance(GsonString);
mListener.replaceFragment(fragment, fragment.getFragmentKey());
在活动中我们的行为如下:
@Override
public void replaceFragment(Fragment fragment, String backstackName) {
if(fragment instanceof PostDetailsFragment){
fragmentPostDetails = (PostDetailsFragment) fragment;
}
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.addToBackStack(backstackName);
fragmentTransaction.commitAllowingStateLoss();
}
我们正在做什么:我们创建一个Activity,如果用户点击相关帖子,则活动只需用新数据将PostDetailsFragment的新实例替换为片段。
问题:在五次或更多次之后,App崩溃并导致OoutOfMemory
错误!
我们应如何解决此问题?