我发现自己在我的纸牌游戏应用程序中切换了很多Fragment
。
当我的用户创建一个套牌时,他会浏览以下片段:
甲板列表片段(点击'新甲板') - > 班级选择片段(法师,战士等) - > 名称选择片段 - >返回甲板列表碎片,列出我们的新套牌。
我这样做是为了有一个平滑的套牌创建过程,但这是我的两个问题:
1)如果它使用户体验更好更顺畅,是否建议使用比Fragment
更多的Fragment
?
2)请注意,我执行以下操作以切换Fragment fragment = new MyFragment();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// Set argument(s) - Not all fragments set arguments
Bundle args = new Bundle();
args.putString("deckName", deckName);
fragment.setArguments(args);
fragmentTransaction.replace(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
:
Fragment
我没有使用从Fragment
到另一个Fragment
的类似方法,而是希望创建一个通用方法,该方法采用可变数量的参数和{{1}}的类型来创建并切换到所述{{ 1}}。
但我似乎无法弄明白该怎么做。
请原谅这篇冗长的帖子,谢谢。
答案 0 :(得分:0)
查看我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
replaceFragment(new HomeFragment());
}
public void replaceFragment(final Fragment fragment) {
getFragmentManager()
.beginTransaction()
.replace(R.id.container, fragment, fragment.getClass().getSimpleName())
.commit();
}
public void addFragment(final Fragment fragment) {
final Fragment hideFragment = getFragmentManager().findFragmentById(R.id.container);
getFragmentManager()
.beginTransaction()
.add(R.id.container, fragment, fragment.getClass().getSimpleName())
.hide(hideFragment)
.addToBackStack(hideFragment.getClass().getSimpleName())
.commit();
}
}
在Fragment中调用上面的方法:
final HomeFragment homeFragment = new HomeFragment();
final Bundle bundle = new Bundle();
bundle.putString("KEY","VALUE");
homeFragment.setArguments(bundle);
((MainActivity) getActivity()).addFragment(homeFragment);