片段UX选择和通用性

时间:2016-12-20 18:35:49

标签: java android android-fragments

我发现自己在我的纸牌游戏应用程序中切换了很多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}}。

但我似乎无法弄明白该怎么做。

请原谅这篇冗长的帖子,谢谢。

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);