我正在尝试一些片段。我有一个带按钮的片段,当我点击该按钮时,我切换到另一个片段。现在,当我按下后退按钮时,我返回到第一个好的片段。现在,当我再次单击该按钮时,将启动一个新片段。所以我总是开始一个新片段。我认为这不是它需要做的方式。有没有更好的方法来恢复已经创建的片段?
我的代码:
public static class PlaceholderFragment extends Fragment{
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
Button test = (Button)rootView.findViewById(R.id.button);
test.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view)
{
Log.d("Test", "Button clicked.");
TestFrag newFragment = new TestFrag();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.container, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
return rootView;
}
}
public static class TestFrag extends Fragment {
public TestFrag() {
Log.d("Test","New fragment");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main2, container, false);
return rootView;
}
}
答案 0 :(得分:0)
使用片段事务时,您可以为片段
指定标记fragmentTransaction.add(R.id.main_fragment,newFragment,fragTag); fragmentTransaction.commit();
之后您可以通过fragmentManager
中的标签找到片段newFragment = fragMan.findFragmentByTag(fragTag); 如果newFragment然后为null,你应该创建片段,因为标签
找不到它答案 1 :(得分:0)
感谢Joakim:
fragmentTransaction.add(R.id.main_fragment, newFragment, fragTag); fragmentTransaction.commit();
之后您可以通过fragmentManager
中的标签找到片段 newFragment = fragMan.findFragmentByTag(fragTag);
如果newFragment为null,则应创建Fragment,因为标签找不到它。如果标记不为null,则只需添加并提交新标记即可。