- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我发现自己在纸牌游戏应用程序中的许多 Fragment
之间切换。
当我的用户创建套牌时,他会浏览以下 fragment :
牌组列表 fragment (点击“新牌组”)->职业选择 fragment (法师、战士等)->名称选择 fragment ->返回牌组列表 fragment ,其中列出了我们的新牌组。
我这样做是为了有一个顺利的套牌创建过程,但这是我的两个问题:
1) 如果可以使用户体验更好、更流畅,是否建议使用比所需更多的 Fragment
?
2) 请注意,我执行以下操作来切换 Fragment
:
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
之间使用类似的方法。
但我似乎不知道该怎么做。
请原谅这篇冗长的文章,谢谢。
最佳答案
查看我的代码:
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);
关于java - fragment 用户体验选择和通用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41249079/
我想使用JOGL图书馆,我想在linux和windows上使用它......在linux上编译的项目可以在windows上运行吗?如果我想为 Windows 编译它,我是否必须更改包含的库? 问候,彼
在用 C++ 实现一个简单的玩具事件循环时,我遇到了一个问题。我有一个接口(interface)(抽象类)Event它由不同类型的事件(键盘、异步调用……)实现。在我的示例中 SomeEvent是Ev
这些列表之间有什么区别。 ArrayList test = new ArrayList(); ArrayList test2= new ArrayList(); 或者在这两类之间。 class tes
对于我的 JavaFX UI,我实现了一个类 ObservableProperties延伸 java.util.Properties并能够监听某些属性的变化(特别是 UI 的本地化文本)。 它工作得很
我是一名优秀的程序员,十分优秀!